ЮЗЕР не есть АДМИНИСТРАТОР (Windows XP/NT)

Данная статья родилась, как крик души после очередного восстановления системы приятеля. Она предназначена администраторам – просветителям пользователей, установщикам и настройщикам операционных систем в компьютерных компаниях, просто интересующимся пользователям. Посвящается всем страдальцам, кто по незнанию и непониманию подвергается атакам вирусов, троянов, кому периодически приходится сносить свою операционную систему дабы излечить её от вирусов над которыми бессильны антивирусы. Но как говорится: “дело было не в машине”. Вы можете тратить сотни, тысячи долларов (или нормо-часов часов – кому как угодно) на обеспечение мнимой безопасности, а “телега” останется на месте. Корень зла лежит в элементарной лени или непроходимой дремучести системного администратора, который устанавливает на Ваш компьютер операционную систему. Проблема в установке операционной системы по умолчанию. В том, что при установке системы, инсталлятор не делает, не требует и даже не предлагает предпринять действия увеличивающие безопасность системы и пользователей. А ведь это так просто. Прошу заметить, что следование данному руководству не даёт 100% защиты, поскольку почти всегда решающим остаётся человеческий фактор, вред наносимый действиями пользователя.Фанаты поклонники программ ICQ WinAMP и прочих “системных” программ могут дальше не читать. Наезд в сторону ICQ и WinAmp версии 5 я делаю потому, что они требуют прав системного администратора в условиях когда, по моему скромному мнению, они этого требовать не имеют права. При всём своём опыте программирования и администрирования я не нахожу разумных причин зачем этим программам и подобным могут потребоваться права администратора. Я не лазил в настройки, я не “гуглил” интернет я не рыл форумы на предмет попытаться заставить их работать так, как я хочу – у меня не было на это ни времени ни желания. Я поставил их – они выдали кучу ошибок. При запуске от прав администратора ошибок не было. Этого достаточно чтобы сказать, что программы не сертифицированы на работу в Windows XP / NT. Есть множество альтернативных программ и свет не сошёлся клином на этих. Есть те же ICQ Lite Miranda, Qip, WinAmp 3 и другие плееры, которые прекрасно работают в среде обычного пользователя. Я вполне допускаю, что проблема решена в каких-то последних версиях. Не тестировал. Но тем кто не боится трудностей я желаю удачи!

Предупреждение! Некоторые действия, которые здесь описываются, при неправильном применении могут привести систему в нерабочее состояние. Поэтому всё, что Вы попробуете повторить и сделать, Вы делаете на свой страх и риск. Автор не несёт никакой ответственности за всё, что может произойти в результате этих действий.

С момента отказа компании Microsoft от развития мёртвой ветви операционных систем WIN95/98 и продвижению новой Windows XP изменились особенности среды в которой работают пользователи. Фундаментальное отличие, которое не заметно с позиции обычного пользователя, кроме внешних украшений и рюшечек, это её, на порядок более совершенное внутреннее устройство. Windows 95/98 это фактически однопользовательская операционная система с полным отсутствием каких либо механизмов защиты системы от действий пользователя и разных пользователей друг от друга в пределах одного компьютера, в то время когда Windows XP это полноправная представительница серверных многопользовательских операционных систем с мощной системой безопасности и разделения прав пользователей и системы друг от друга. Часто, восстанавливая системы разрушенные вирусами и действиями пользователей я очень крепко поливаю грязью политику компании Microsoft за то что она предоставила умолчательное правило установки системы на диск с FAT32. Это совместно с другим умолчательным правилом, выраженным в том, что первый пользователь становится администратором приводит к очень печальным последствиям. Не буду перечислять все достоинства и преимущуства файловой системы NTFS перед FAT, а скажу лишь то, что самое важное из них это наличие возможности защитить файлы одних пользователей от других, так называемый контроль безопасности поддерживаемый на уровне ядра системы. Данное руководство повод к осмыслению и инструкция к действию, тому кто ещё не работает по новым правилам, тому кто не боится небольших сложностей возникающих во время перенастройки и эксплуатации системы настроенной таким образом. Данное руководство позволит Вам фактически послать на 3 буквы писателей вирусов и их друзей – писателей антивирусов, которые как лесорубы, пилой дружба 2, то есть в связке, пилят золотой карман пользователя. Раздувающаяся база сигнатур вирусов у детекторов, эвристических анализаторов и качает Ваши денежки. Для ехидно хихикающих над предыдущим моим постулатом любителей халявы (активационных ключей и кряков к антивирусам) укажу на наличие финансовой утечки, которая происходит в карманы компаний производителей компьютеров. Ведь когда Ваш компьютер, после очередного обновления антивируса начинает загибаться Вы начинаете “собираться с деньгами”, чтобы провести очередное обновление аппаратуры. Растущее количество детектируемых вирусов требует увеличения антивирусных баз. А их обработка, тем более “на лету”, требует увеличения скорости работы дисковой подсистемы, процессора, и увеличения используемого для работы антивируса объёма оперативной памяти. С другой стороны все ли вирусы есть в антивирусных базах? Я сомневаюсь. Большинство пользователей компьютеров используют антивирус и при этом всё равно случаются заражения (множественные случаи поражения руткитами через Skype). Я могу объяснить это просто, все эти пользователи имели привилегии администратора. Жесткое ограничение привилегий пользрвателей является основополагающей мерой безопасности, которая гарантирует высочайший уровень защиты от вирусов, в то время когда антивирус ничего не гарантирует. Я вообще не считаю антивирусные программы мерой защиты от вирусов, на которой нужно остановиться. Помимо совершенствования полиморфических, мутационных механизмов вирусов, которые помогают им проскочить антивирусный контроль, существуют и уникальные вирусы. Вряд ли в антивирусные базы попадают сигнатуры на все специализированные и заказные вирусы. И нужна ли вам эта защита постоянно? К примеру я, перестал пользоваться антивирусами в период детства оконной системы Windows 3.10. С тех пор у меня на компьютере нет постоянно установленного антивируса. При этом я как и многие работаю под Windows, и имею постоянно подключённый интернет и круглосуточно включённый компьютер. И при единичных, очень редких, профилактических offline тестированиях дисков – вирусов ни разу не находил. Я покажу Вам как я это делаю.

Итак, берем напильник и точим стереотипы:

  1. Устанавливая Windows XP, Windows NT, выберите в инсталяторе форматирование раздела куда устанавливается система форматом NTFS. Если Вы установили систему на диск с FAT32, преобразовать её в NTFS можно при помощи утилиты convert, которая входит в состав операционной системы. Она преобразует файловую систему, и установит списки контроля доступа к файлам и каталогам по умолчанию. Эти списки я всегда изменяю по-своему. Но об этом позже.
  2. Установив первого пользователя администратором, обязательно создайте два, три других пользователя с правами обычных пользователей. Тоесть сделать их членами только одной группы “users” или “пользователи” в русском ванианте windows. Само собой разумеется, что пользователи, а главное системный администратор обязательно должны иметь установленные пароли! Обязательно задайте пароли! И обязательно разыне! Да, его прийдётся каждый раз вводить. Но с одной стороны Вы защищаете систему, с другой Вы учитесь быстро набирать пароль, а это дополнительная практика работы на клавиатуре.
    После того как вы это сделали: НИКОГДА НЕ РАБОТАЙТЕ ОТ ИМЕНИ АДМИНИСТРАТИВНЫХ ПОЛЬЗОВАТЕЛЕЙ. “Не работайте” – значит, что можно только администрировать! Административные функции предназначены для внесения серьёзных изменений в операционную систему, установки программ и т д. В повседневной работе большинству пользователей достаточно прав обычного пользователя. Я никогда не работаю от логина системного администратора, кроме случаев когда это требуется, тоесть в моменты непосредственно администрирования системы: настройки firewall, установки новых проверенных программ и т д. Соблюдение двух этих правил создаст защищённую рабочую среду пользователей. Это значит, что система работает изолированно от пользователей, а пользователи изолированы друг от друга и от системы.

В системе построенной таким образом почти* не остаётся возможности дестабилизировать её, заразить и тем более уничтожить. Всё что может сделать вирус это уничтожить либо похитить (“слить” в интернет) данные пользователя. И именно того пользователя, который допустил заражение своей среды. Ни системе ни другим пользователям этого компьютера это не повредит. За исключением случая, когда данные помещены в каталоги куда имеется публичный доступ. Об этом я буду ещё упоминать. Восстановление работоспособности операционной среды пользователя может выполняться простым удалением запускаемых файлов (обычно это тела вирусов в каталоге на который указывает системная переменная %TEMP%) из среды пользователя, из сессии администратора. Средой пользователя я называю совокупность папок, файлов, ключей реестра, которые он (пользователь) может изменять. Я считаю, что запускаемых файлов в среде пользователя быть не может потому, что это брешь, которая со временем может привести и приведёт к заражению системы. Тоесть пользователь должен иметь возможность изменять только доступные ему данные, но никак не исполняемый код. О фильтре исполняемых файлов, который не даёт возможность запуска приложений кроме разрешённых, речь пойдёт немного ниже.

Я не знаю из каких соображений разработчики из компании Microsoft в списках контроля доступа NTFS на корень системного диска по умолчанию поставили разрешительное право пользователям создавать каталоги в корне загрузочного диска. Это даёт возможность вирусам создавать там папки и записывать туда файлы. Я всегда удаляю право пользователям создавать папки и подпапки. На корень системного диска я ставлю полные права только группе администраторов и системе. Пользователи имеют права чтения просмотра каталогов и запуска. Осторожно! При изменении NTFS прав на корне системного диска не распространите права на субконтэйнеры (вложенные папки и файлы). Птичка распространения прав по умолчанию обычно сброшена. Не устанавливайте её, иначе вы рискуете получить нерабочую систему.

ACL на локальном диске C
ACL на локальном диске C
Предупреждение системы читаем вникаем и игнорируем
Предупреждение системы читаем, вникаем и говорим твёрдое "ДА"

Для папки C:\Program Files\ я обычно сбрасываю пользователям права на чтение, получается что пользователи могут только смотреть содержимое каталогов. Открывать и запускать файлы программы не могут.

ACL Program Files
ACL Program Files

При этом рекомендую зайти в кнопку Advanced. Там требуется поставить “птичку” “Replace permission entries on all child objects with entries shown here that apply to child objects”. Это значит, что все текущие права будут распространеты на дочерние объекты. Этим действием достигается полная переустановка ACL прав доступа вложенных объектов. Если у какой-го то объекта были другие права – они будут сброшены и будут установлены новые права от родительского объекта. Этим я достигаю уверенности, что все права будут установлены так как я хочу. Зелёным выделено что поставить и нажать.

ACL Program Files перезапись прав доступа
ACL Program Files перезапись прав доступа

При нажатии на кнопку Apply будет выдано предупреждение о том, что права будут перезаписаны. Читаем, считаем до пяти, проверяем что делаем это с каталогом Program Files, и соглашаемся.

ACL Program files replase permission последнее китайское предупреждение
ACL Program files replase permission последнее китайское предупреждение

С моей точки зрения запрет всем “пользователям” “читать и запускать” файлы из папки Program Files верно – не все программы предназначены для запуска пользователям, и не все файлы пользователям нужно видеть. Это позволяет более тонко настраивать систему, и бороться с несанкционированным доступом. Например я не люблю MS Internet Explorer. Хотя интернет банкинг Kommercni Banka требует для работы именно Internet Explorer. Для эккаунта который будет работать только с интернет банкингом я создаю группу и этой группе разрешаю запуск MS IE. Остальным же оставляю право запускать FireFox. Другой пример когда файлы не должны быть доступны на чтение пользователями – файлы секретных ключей OpenVPN. А если папка Program Files настроена, так как делаю я, то уже “по умолчанию” устанавливаемые программы заблокированы от запуска пользователями. Чтобы разрешить запуск нужно именно на каталоге самой программы группе “users” или “пользователи” установить право “read”, “чтение”. Хотя обычно я создаю группу для каждой установленной программы. На снимке экрана показан пример установки разрешения всем членам группы Users запускать FireFox. Доустановить достаточно только верхнюю “птичку” “Read and Execute”, как нижняя доустановится автоматически. Снова позеленил там где нужно давить и где надавится само.

ACL Programm Files FireFox
ACL Program Files FireFox
ACL Programm Files FireFox Чтение и Запуск
ACL Program Files FireFox Чтение и Запуск

После этого все пользователи указанной группы получат право запускать новоустановленную программу. Теперь я хочу пояснить почему я создаю два-три обычных пользователя. У Вас наверняка есть семья, есть друзья. Все они теоретически могут захотеть часок другой поработать за вашим персональным компьютером. Вот в этом случае у Вас есть запасные логины, которые скроют от них ваши данные, ваши файлы, если только вы специально не выложили их в публичнодоступные каталоги “userxx shared folders”. Они не смогут поменять расположение иконок на вашем столе, они не изменят настройки ваших программ. Вы даёте человеку поработать и не переживаете, что он что-то сделает не так. Вот поэтому все логины должны быть защищены паролями, уникальными паролями!

Третий важный на мой взгляд каталог, который я создаю и ставлю права – C:\Install\. Этот  каталог я использую для хранения и запуска инсталляций. К нему права доступа выдаются только Системе, Администраторам и Power Users. Пользователи не имеют право даже его листать. Созданный, по умолчанию этот каталог наследует права от родительского C:\. Снимаю наследование. Выделено зелёным.

ACL Install
ACL Install

Получаем предупреждение и предложение копировать права от родительского каталога или удалить. Копирую.

ACL Install копирование прав доступа от родителя вместо наследования
ACL Install копирование прав доступа от родителя вместо наследования

Вот что получается. Обратите внимание права перестали быть наследованными, стали not inherited.

Права доступа после копирования
Права доступа после копирования

Удаляем Users, добавляем Power Users и даём права, как показано ниже. В итоге получим права “чтение и запуск”.

ACL для Power Users
ACL для Power Users

Вот как это выглядит:

ACL Install результат
ACL Install результат

А теперь вернёмся к дальнейшей эскалации безопасности в системе. Совершенно незаслуженно остаётся незамеченной админско-пользовательским сообществом бесплатная утилитка TrustNoExe**. Значение этой маленькой программы в области комплексной безопасности Windows нельзя переоценить, хотя всё что она умеет делать – это всего лишь блокировать запуск программ, которые не прописаны в её белых списках. Но в сумме с блокировкой на изменение файлов и каталогов в NTFS она завершает непроходимый барьер для большинства исполняемых вирусов приходящих по электронной почте, самозагружаемых с троянских сайтов и т д. Всё что не пролезло через дыру безопасности операционной системы всё будет заблокировано на подлёте. В пользовательской жизни практически не требуется запускать скачиваемые программы из интернета. Поэтому если настроить TrustNoExe на то чтобы она допускала запуск программ только из каталогов C:\Program Files\ и C:\Windows, что она делает по умолчанию, и при этом снять устанавливаемое по умолчанию право пользователей создавать там каталоги и файлы, что я описал выше, то получится что запускаться могут только предустановленные администратором программы, коими вирусы не являются. Поэтому вирус попавший на компьютер и случайно, или даже через “дырку” в эксплорере skype или другой программе запущенной от привилегий пользователя, получит “в табло”, а пользователь получит предупреждение о том, что такой-то исполняемый файл не может быть запущен. Этим все закончится. Программа TrustNoExe элементарно инсталлируется, и просто настраивается. Понятно, что делать это нужно из под логина системного администратора. Данная программа в активированном состоянии (когда сервис активен) не даёт возможности запуститься ещё одной “умной” программе: Adobe Photoshop cs2. Инженеры компании решили пойти своим оригинальным путём: когда Вы запускаете фотошоп, он в каталоге %TEMP% пользователя создаёт файл, который потом и запускается фотошопом. TrustNoExe честно выполняет свою работу сообщая, что запуск файла …\Adobelm_Cleanup.0001.dir.0000\~df394b.tmp запрещён. И после этого фотошоп, с заявлением чтобы Вы переустановили его, вываливается. Стоит отключить TrustNoExe на период старта фотошопа, как все начинает работать. И продолжает работать после старта TrustNoExe. При этом в списке процессов видно два процесса со странными именами, от вида которых обычного администратора бросает в дрожь. Это неизвестные нетипичные для системы процессы. Насколько я могу предположить это элементы противоракетнойпиратской системы, или специального механизма, который пособничает вирусам. Других мыслей у меня нет зачем эту гадость нужно было создавать именно динамически и причём не в памяти, а на диске во временном каталоге. Почему её нельзя было разместить в Program Files, как это делают все? Если это защита, то её разработчиков можно поздравить с поражением, она прекрасно “обезврежена” написанными кракерами генератором ключей. Вопросы в общем риторические, но задуматься есть над чем. Как это обойти проблему старта PhotoShop CS2 при запущенном TrustNoExe я опишу ниже.

Вторая проблема с которой приходится столкнуться при использовании TrustNoExe это проблемы при запуске разных инсталляторов. Для хранения и запуска инсталляций у меня предназначен каталог C:\Install\. Его я добавляю в белый список TrustNoExe. Это разрешат запускать программы которые туда записал администратор. Но инсталляторы иногда используют каталог C:\ и часто используют каталог %TEMP% (С:\Documents and settings\Administrator\Local settings\Temp\) для распаковки фалов перед инсталяцией. Запуск этих файлов оттуда нужно разрешить в TrustNoExe. C редкоиспользуемым случаем с каталогом “C:\случайное имя\” сложнее. Здесь прийдётся остановить TrustNoExe и после установки такой программы запустить его снова.

ВАЖНО зарубить себе на носу ещё одну очень важную вещь! Никогда не скачивать исполняемые модули программ, которые в последствии могут быть установлены в систему, через сессию обычного пользователя от которого ведется вся повседневная работа. Если в среду пользователя всё же (отключённый или не установленный TrustNoExe) попал какой либо вирус, он может заразить этот скачанный исполняемый файл и тогда, когда этот файл будет запущен из под логина администратора – это приведет к провалу всей, только что выстроенной системы безопасности. Cкачивать, то что будет устанавливаться в систему, можно только от логина администратора и только в каталоги, которые доступны на запись только администратору. Поймите идеологию, – речь о программах, которые потенциально могут быт инсталлированы в систему. В плане безопасности я люблю программы, которые не требуют инсталляции. Либо программы которым достаточно для установки прав писать в свой будущий каталог.

Я упоминал, что кроме администратора должно быть ещё несколько пользователей, зачем? Хоть один раз в жизни у Вас возникнет ситуация когда кто-либо посторонний захочет поработать на Вашем компе. Вот для такого непредвиденного случая у Вас уже будет готовый пользователь. Другой пользователь, отличное место чтобы пользоваться интернет банкингом и другими очень приватными делами. Естественно, что в его сессии не стоит пользоваться никакими другими ненужными для банкинга программами. Это даст максимальную защиту ваших персональных данных.

Запуск Adobe Photoshop. Методика.
Данная методика не является хорошей поскольку является потенциально опасной для нарушения выстроенной системы безопасности. Суть заключается в том, чтобы в TrustNoExe прописать “левый” странно именованный каталог, где-то в профиле пользователя, из которого разрешить запуск файлов. А для фотошопа создать командный файл в котором прописать его как временный каталог.

set TEMP=C:\RUNDOMS
set TMP=C:\RUNDOMS
del /s /q %temp%\*.*
pusd .
c:\
cd %temp%
rmdir /q /s %temp%
popd
start C:\PROGRA~1\ADOBE\ADOBEP~1\PHOTOS~1.EXE

К каталогу C:\RUNDOMS, пользователю от которого запускается фотошоп, даются полные права.
В чём же заключается опасность, если учесть что пользователь сам туда ничего записывать и запускать не будет? Опасность в дырявости какой либо из программ которыми пользуется пользователь. Но для этого потенциальный вирус должен отсканировать все каталоги в которые он может писать и найти нужный, который пропускает TrustNoExe. К сожалению с авторами TrustNoExe мне связаться не удалось, и мои идеи-пожелания, которые могли обеспечить лучшее функционирование TrustNoExe, пока остаются нереализованными.

Вторая проблема использования TrustNoExe, это инсталляторы. Да да, те самые инсталяторы которые ставят программы. Логика их работы такова, что они распаковывают файлы во временный каталог и оттуда запускают. А TrustNoExe разумеется выполняет свою работу – блокирует запуск. Чтобы этого избежать нужно либо на момент инсталяции прописать нужный временный каталог в TrustNoExe, либо остановить его. Останавливать стоит только в том случае если все пользователи закрыли logout свои сессии. Это гарантирует отсутствие момента когда вирус из среды пользователя потенциально имеет шанс к запуску. В случае добавления пути, я рекомендую его всегда удалять. От греха подальше.

Маньяк скажете? А что делать… :)

(*) Почти не остаётся возможности – значит что нет прямой возможности, но всегда остаётся уязвимость програмного обеспечения составляющего систему, и отрицать это нельзя.

(**) В Windows 2000 ResKit-е была утилита AppSec которая выполняла подобные функции но затем она была выброшена и забыта. Специально или по умыслу?

Leave a Reply