Запрещена загрузка легальной программы. Запрет на установку нежелательных программ при помощи AppLocker. Использование Локальной политики безопасности для блокировки и разблокировки софта

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

Если необходимо заблокировать использование программы, которая запускается из одного файла, то лучше всего накладывать запрет посредством «Редактора групповой политики».

  1. Запускаем службу «Редактор групповой политик». Для этого следует одновременно нажать на клавиатуре две клавиши «Win+R» и в появившемся окошке вводим «gpedit.msc». Жмем «Ок».

  2. В новом окне переходим в подраздел «Конфигурация пользователя», затем «Административные шаблоны» и «Система». Далее, справа ищем иконку «Не запускать указанные приложения Windows». Кликаем по ней пару раз левой кнопкой мышки.

  3. После в открывшемся окне нужно установить переключатель в режим «Включить».

  4. Далее, следует указать какую программу необходимо заблокировать. Для этого кликаем по иконке «Показать».

  5. Откроется окно «Вывод содержания». В нем будет небольшая таблица, где нужно ввести точное название файла, который запускает программу. Название нужно вводить вместе с расширением.
  6. Если точное имя неизвестно, то его можно узнать, нажав правой кнопкой мышки на иконку или ярлык приложения и выбрать в меню пункт «Расположение файла».
  7. Расширение можно узнать, нажав в проводнике по иконке «Вид», где в открывшемся меню будет возможность поставить галочку напротив функции «Расширение имен файла». Что означает – отображать или не отображать расширение в названии файла.

  8. Составив список из нежелательных программ, сохраняем его, нажав «Ок».
  9. Перезапускаем компьютер и проверяем, запускается ли программа из составленного «черного» списка. Если все сделано правильно, должна появиться иконка «Ограничение».

Важно! В некоторых базовых ОС Windows 8 и 8,1 «Редактора групповой политики» может отсутствовать. Или он не будет запускаться через команду «gpedit.msc», поскольку программа будет находиться в системной папке Windows\SysWOW64, а не в Syatem32. В таком случае приложение нужно запустить вручную.

Если необходимо узнать были ли попытки запуска программ из «черного» списка, то для этого нужно запустить приложение «Администрирование» в окне «Панель управления».


И посмотреть статистику в приложении «Просмотр событий».

С каждым последующим обновлением операционной системы Windows 10, пользователи замечают, что количество легальных и безопасных программ, которые система блокирует, увеличивается. При этом приложения ни то, что не запускаются, но и не устанавливаются, а выполнить любую манипуляцию невозможно даже с правами Администратора. Софт не запускается, а на экране монитора появляется сообщение о том, что «Это приложение было заблокировано в целях защиты». Причина такого поведения системы кроется в механизмах Контроля учетных записей (UAC), которые блокируют сторонние приложения с просроченной или отозванной цифровой подписью. Поэтому, рассмотрим способы, как разблокировать приложение в ОС Windows 10.

Отключение UAC с целью разблокирования приложения

Если на Windows 10 у вас не получается выполнить установку программ, первое что нужно сделать, это отключить Контроль учетных записей. Для этого стоит выполнить следующее:

  • Жмём «Пуск» и в строку поиска вводим следующий запрос: «Изменение параметров контроля учетных записей» или просто вводим «UAC».
  • Откроется новое окно. Перетаскиваем ползунок в положение «Никогда не уведомлять».

Важно отметить, что UAC можно отключить с помощью редактора реестра. Для этого необходимо проделать следующие действия:

  • Жмём «Win+R» и вводим «regedit».

  • Появится окно редактора реестра. Переходим по ветке «HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System». В окне справа находим параметр «EnableLUA» и выставляем ему значение «0».

  • После отключения Контроля учетных записей вы сможете устанавливать множество приложений без каких-либо блокировок.

Удаление цифровой подписи как метод разблокирования приложения

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

  • Открываем файл, который нужно проверить. Далее выбираем «Файл», «Сведения», «Сведения о цифровой подписи».

  • Убедившись в том, что подпись имеется, стоит её удалить. Для этого открываем программу FileUnsigner и читаем инструкцию о том, как удалить цифровую подпись с помощью данного софта.

После удаления данного элемента можно произвести установку программ на компьютер с Windows 10. Система не будет блокировать запуск приложений и установочный файл софта.

Использование Локальной политики безопасности для блокировки и разблокировки софта

Еще один способ, как заблокировать и разблокировать приложение – это использовать инструмент «Локальные политики безопасности». Для того, чтобы создать исключения для программы, стоит выполнить следующее:

  • Жмём «Win+R» и вводим «secpol.msc».

  • Откроется новое окно. Выбираем «Параметры безопасности», «Политики управления приложениями», «AppLocker» и выбираем «Исполняемые правила».

  • Справа на пустом месте нажимаем правой кнопкой мыши и выбираем «Создать правило…».

  • Откроется окно Мастера создания новых правил. Жмём «Далее».

  • Появится еще одно окно. Здесь нам нужно поставить отметку «Разрешить» или «Запретить» запуск программы. Оставляем раздел «Все» пользователи и жмем «Далее».

  • В следующем окне мы выбираем «Издателя», так как хотим заблокировать или разблокировать программу.

  • В новом окне нажимаем на кнопку «Обзор» и указываем путь к файлу приложения.

  • Добавив файл, ползунком указываем уровень доверия к файлу. Либо разрешаем его запуск, либо блокируем.

  • Нажимаем на кнопку «Создать». Правило готово. Теперь, чтобы система его приняла, стоит запустить командную строку с правами Администратора и ввести следующее: gpupdate /force. Локальные политики будут обновлены. Софт будет разблокированный или заблокированный (в зависимости от того, что вы указали).

Таким образом, любая настройка правил для той или иной программы позволяет её запускать или блокировать на компьютере с Windows 10, чего, в принципе, мы и добивались.

15.10.2014 | 22:55 Аналитика

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

Но, есть огромный класс программного обеспечения, обладающего функционалом «двойного назначения». Двойного, поскольку программа может использоваться не только для оказания нужного сервиса, но возможно также ее применение и во вред не подозревающему об этом пользователю. Специалисты в области информационной безопасности называют такие программы «Riskware». Вот одно из многочисленных описаний такого класса программ: http://support.kaspersky.ru/viruses/general/664#block2 .

Наличие такого программного обеспечения может быть опасно, поскольку кто-то может его использовать во вред владельцу компьютера, воруя конфиденциальную информацию. Обнаружить злонамеренные действия не под силу подавляющему большинству пользователей, а антивирусные программы не детектируют такую угрозу, поскольку программа относится к легальным.

Приведем в качестве примера хорошо известную в Рунете программу Punto Switcher. Она установлена на многих компьютерах, и помогает экономить время на переключении раскладки клавиатуры, выполняя эту операцию автоматически.

Для того, что бы выполнять свои функции, Punto Switcher должна перехватывать все нажатия клавиш на клавиатуре через специальные функции. Именно так работают клавиатурные шпионы, которых все опасаются. В сети можно даже найти инструкции как сделать из программы Punto Switcher клавиатурного шпиона: http://www.youtube.com/watch?v=RduY09icqjY .

Однако шпионская программа может попасть в сигнатурные базы антивирусных программ и будет заблокирована, а легальные продукты с функциями слежения не попадут туда никогда.

Мало кто знает, что Punto Switcher ещё может сохранять клавиатурный ввод и информацию, которая копируется через буфер обмена, в специальный дневник. Поэтому, её можно настроить на скрытое отслеживание ваших действий, как обычный компьютерный шпион.

Давайте посмотрим, как это работает наглядно на компьютере, на котором установлена программа Punto Switcher.

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

И еще скопировали текст описания работы переключателя раскладки в буфер обмена для того, что бы потом вставить его в другое место:

После этого открываем дневник в программе Punto Switcher:

И мы видим набранный и скопированный тексты в дневнике:

Если пользователь осознанно использует этот функционал, тогда вместе с автоматическим переключением раскладки он еще получает возможность дополнительного сохранения всех набранных текстов и системного буфера. И за это мы любим Punto Switcher.

Однако Punto Switcher можно установить незаметно для пользователя, и скрыть явные признаки ее нахождения на компьютере. В приведенной выше инструкции как раз это и продемонстрировано.

Очевидно, что ни одна антивирусная программа не помешает Punto Switcher собирать тайно всю информацию в интересах установившего ее лица. А это уже использование популярной программы в качестве клавиатурного шпиона. Антивирус, установленный на компьютере, при проверке файла программы говорит, что угроз не обнаружено:

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

Возникает вопрос, как тогда быть, если классические программы защиты не реагируют на легальную слежку?

Нужно использовать маскировку своих действий в системе. Отыскать тех, кто за вами следит очень сложно, а в некоторых случаях невозможно. Нужно скрывать свои действия от всех, кто хочет украсть вашу информацию. Ниже показано — как это можно сделать с помощью программы маскировки COVERT, и что при этом будет видеть и сохранять в своём дневнике программа Punto Switcher.

Открываем программу-маскировщик COVERT, и в главном окне нажимаем кнопку “Вход в платформу защиты”.

В защищённой среде печатаем текст в программе блокнот, и потом копируем его в буфер обмена:

Выходим из платформы защиты программы COVERT и проверяем, что смогла сохранить в своём дневнике программа Punto Switcher:

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

Другие материалы о методе маскировки в статье «Новая философия защиты от шпионских программ

Инструкция

Зайдите в операционную систему с учетной записи, обладающей правами администратора. Откройте в меню «Пуск» утилиту «Выполнить» и впишите в строку gpedit.msc, нажмите Enter. В появившемся окне конфигурации пользователей выберите меню с названием «Административные шаблоны», после чего перейдите к компонентам.

В консоли управления выберите настройку «Запрещенные или разрешенные оснастки», затем найдите параметры групповой политики. В расширении оснастки укажите напротив каждой позиции параметр «Не задано». После того, как вы выставите настройки по умолчанию, установка программ будет доступна и пользователям ограниченных учетных записей.

Переведите учетную запись в администраторы, однако, после этого помимо установки и удаления программ пользователю будут доступны и другие операции. Для этого откройте «Панель управления» и зайдите в меню «Учетные записи пользователей». Выделите нужную вам при помощи мыши и в меню выберите изменение учетной записи.

После этого нажмите кнопку «Сделать администратором компьютера». Сохраните изменения и перезайдите в систему, проверьте, появилась ли для данного пользователя компьютера функция установки и удаления программ и остальные функции.

Если вы хотите настроить параметры безопасности вашего компьютера особым образом, почитайте статьи на данную тему, например, вот эту: http://stfw.ru/page.php?id=8718. Задавая определенную конфигурацию для того или иного пользователя операционной системы, помните, что в некоторых случаях настройку будет невозможно изменить не меняя тип учетной записи. Поэтому если вы, например, создаете учетную запись с ограниченными правами , хорошо продумайте каждую составляющую настроек, которая может понадобиться в дальнейшем.

Полезный совет

Ставьте пароль на учетные записи администратора.

В настоящий момент существует огромное количество разнообразных компьютерных программ. С их помощью можно редактировать текст, музыку, видеофайлы, обмениваться сообщениями в сети и даже звонить на другой конец света.

Инструкция

Приобретите или скачайте из всемирной паутины установочный файл программы (дистрибутив). Он всегда имеет «.exe». Называться дистрибутив может по имени самой программы или же (что более распространено) «Setup.exe», «Install.exe».

Заполните форму, если мастер установки предложит вам ее. Чаще всего это ФИО, e-mail, страна проживания.

На экране появится индикатор установки программы. Если возникнут еще какие-либо окна, требующие выбора – оставляйте все как есть (по умолчанию). По завершению установки нажмите кнопку «Готово». Программа установлена. Ищите ярлык на «Рабочем » или в меню кнопки «Пуск».

Видео по теме

В операционной системе Windows 7 предусмотрены возможности гибкой настройки прав каждого пользователя. Администратор задает список действий, которые разрешены пользователю в системе, и только администратор этот список может изменить. Установка программ - действие, затрагивающее безопасность системы.

Вам понадобится

  • - права администратора.

Инструкция

Зайдите в операционную систему под пользователем «Администратор». Для этого вам нужно знать пароль системной учетной записи администратора, и ввести его при запуске Windows. Как правило, эти данные были установлены пользователем при первом запуске компьютера, например, при установке операционной системы. Если у вас нет прав администратора, отключайте данную учетную запись или пытайтесь восстановить пароль.

Запустите «Редактор локальной групповой политики». Чтобы это сделать, введите в строку «Выполнить» команду gpedit.msc и подтвердите ее выполнение нажатием ввода на клавиатуре. Таким образом вы дадите команду операционной системе при помощи командной строки. В левой части окна разверните «Конфигурация пользователя» - «Административные шаблоны» - «Система» и перейдите к пункту «Выполнять» только указанные приложения Windows. Кликните дважды по этой надписи, чтобы запустить службу.

Откроется окно настроек данной службы. Установите переключатель на надпись «Включить», а затем нажмите на кнопку «Показать». Откроется окно «Вывод содержания». Здесь вам нужно указать, какие программы может запускать пользователь. Таким образом, если вы укажите строгий список exe-файлов, которые пользователь имеет право запускать на выполнение, запуск setup.exe или любой другой установки будет за пределом его возможностей.

Также стоит отключить возможность внесения изменений в реестр, запуск приложений из командной строки, а также запуск из справки. Эти службы взаимосвязаны, однако, выключение одной не вызывает выключение другой. Вы сможете устанавливать разные права для программного обеспечения. Если у вас большое количество программ на компьютере, просмотрите и удалите лишние, чтобы не занимать память.

Источники:

Совет 4: Как запретить пользователям устанавливать программы

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

Инструкция

Для установки такого запрета вам потребуются права администратора. Назначьте каждому пользователю права в системе. Для этого вызывайте командную строку, нажав Win+R, и введите control userpasswords2. Отметьте учетную запись пользователя и нажмите «Свойства». Во вкладке «Членство в группах» установите переключатель «Уровень доступа» в нужное положение.

В командную строку введите secpol.msc и подтвердите, нажав ОК. В окне консоли управления раскройте двойным щелчком оснастку «Политики ограниченного использования программ». Если появится сообщение системы о том, что политика пуста, в меню «Действия» выберите команду «Создать политику».

В разделе «Тип объекта» щелкните дважды пункт «Назначенные типы файлов», в списке отметьте файлы с расширением LNK и нажмите «Удалить».

В том же разделе раскройте пункт «Принудительный» и назначьте применение политик ограничения ко всем файлам программ и для всех пользователей, кроме локальных администраторов. Подтвердите, нажав ОК. Раскройте папку «Уровни безопасности», щелкните дважды по пункту «Не разрешено» и в окне свойств нажмите «По умолчанию».

Чтобы запретить запуск установленных программ, раскройте оснастку «Дополнительные правила» и в правой части экрана вызывайте выпадающее меню щелчком правой клавиши мыши. Выберите команду «Создать правило для пути». В окне создания правила нажмите кнопку «Обзор» и укажите путь к папкам, в которые установлены программы.

Теперь вам нужно настроить разрешения для этих папок. Раскройте папку и в меню «Сервис» отметьте команду «Свойства папки». Во вкладке «Вид» уберите флажок с пункта «Использовать простой общий доступ…»

Щелкните правой клавишей по значку папки и выберите опцию «Общий доступ и безопасность». Во вкладке «Безопасность» отмечайте поочередно пользователей и в разделе «Разрешения» ставьте флажок в чекбокс «Разрешить» напротив пункта «Чтение». Нажмите «Дополнительно». В окне дополнительных параметров во вкладке «Разрешения» отметьте группу пользователей и нажмите «Изменить». Обозначьте флажками действия, которые разрешено и запрещено выполнять данной группе.

Видео по теме

Источники:

На персональном компьютере часто ставят различные ограничения, которые не позволяют выполнять некоторые функции. Часто пользователи сталкиваются с ситуациями, когда установку программ совершить невозможно.

Вам понадобится

  • - права администратора.

Инструкция

Для решения данной проблемы нужно обладать правами администратора. Как правило, подобные права настраиваются в «Панели управления». Чтобы разрешить установку программного обеспечения на персональный компьютер, включите учетную запись администратора. Для этого перезагрузите компьютер. Далее при загрузке операционной системы выберите учетную запись администратора. Если у вас потребуют пароль, введите его. Однако случаются ситуации, когда пользователь не знает пароль.

Для этого вам нужно будет произвести некоторые настройки в учетной записи администратора. Зайдите в безопасном режиме в систему под другим пользователем, у которого не установлено паролей на вход. Далее нажмите на ярлык «Мой компьютер». В левой части выберите вкладку под названием «Панель управления». Найдите там ярлык, который называется «Учетные записи пользователей». Нажмите на него для просмотра всех пользователей, которые могут осуществлять вход на компьютер.

Найдите свою учетную запись и установите ей права, как у администратора. Можете просто изменить группу, в которой находится пользователь. Нужно просто добавиться в группу «Администраторы». Далее зайдите в пункт под названием «Учетные записи пользователей Win 2k». Здесь вам нужно убрать некоторые ограничения со своей учетной записи, чтобы можно было устанавливать различное программное обеспечение на локальные диски персонального компьютера.

Во вкладке «Имя пользователя» выберите свою учетную запись и нажмите два раза по ней левой клавишей мыши. Перед вами появится небольшое окно, в котором нужно произвести настройки. Выберите вкладку «Членство в группах». По умолчанию стоит «Ограниченный доступ». Установите положение флажка на пункт «Обычный доступ». Далее отключите пароль у учетной записи администратора и установите пароль на своей учетной записи. Перезагрузите компьютер и устанавливайте программы, которые раньше нельзя было инсталлировать.

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

Инструкция

Для настройки запретов вам потребуются права администратора. Вызывайте командную строку, используя сочетание Win+R, и введите команду secpol.msc. Откроется окно оснастки «Локальные параметры безопасности».

Раскройте «Политики ограниченного использования программ». В разделе «Тип объекта» двойным щелчком разверните пункт «Назначенные типы файлов». В окне свойств перечислены типы файлов, которые будут считаться исполняемым кодом.

Вам нужно убрать из этого списка программы, которые могут быть установлены другими пользователями. Например, если кто-то из них работает с таблицами Excel или базами данных Access, отметьте в списке эти пункты и нажмите «Удалить». Удалите также LNK – «Ярлык». Нажмите ОК для подтверждения.

Двойным щелчком раскройте пункт «Принудительный» и переведите переключатель «Применять политики ограниченного использования…» в положение «Для всех, кроме локальных администраторов». Раскройте папку «Уровни безопасности» и двойным щелчком разверните пункт «Неограниченный». Нажмите «По умолчанию» и ОК для подтверждения.

Совсем скоро писатели троянов и прочей нечисти всерьез возьмутся за пингвина и наберутся знаний, чтобы создать по-настоящему опасные вирусы. Даже уже существующих троянов не так просто отличить от легальных программ, зато их всегда можно поместить в карантин.

Многие даже очень грамотные пользователи UNIX-подобных систем считают свои ОС неуязвимыми к разного рода программной заразе. И одна из главных причин такой уверенности - традиция устанавливать софт через проверенные, подписанные сертификатами репозитории, которые по определению не могут содержать зловредных программ.

Вторая причина - разделение прав, благодаря которому малвари довольно трудно навредить системе или прописаться в автозагрузку (пользователи Windows любят наделять себя правами админа, в UNIX это не только не поощряется, но часто и вовсе запрещено).

Можно долго говорить о том, насколько абсурдна такая уверенность; о 95% пользователей Ubuntu, которые спокойно устанавливают любой подсунутый им deb-пакет; о до смешного простом способе перехвата пользовательского пароля с помощью программ типа xspy; об автозагрузке KDE и GNOME, прописаться в которую можно, создав скрипт, состоящий из одной строки… Но это статья о другом. В конце концов, все мы люди, и никто из нас не застрахован от ошибок, к тому же иногда очень трудно отказать себе в запуске программы, скачанной из непроверенного источника.

Руки прочь от файлов

Один из наиболее популярных способов помещения приложения в изолированную среду - это так называемые песочницы, которые в Linux представлены системным вызовом chroot, во FreeBSD - технологией jail (тюрьма), в Solaris - зонами (или, говоря языком маркетологов, контейнерами).

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

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

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

На первый взгляд кажется, что защитить конфиденциальные данные просто. Для этого можно использовать дополнительную учетную запись, выступающую в роли карантина: создаем пользователя (который не состоит ни в каких системных группах) и запускаем команду от его имени с помощью sudo. Работая с правами этого пользователя, программа не сможет прочитать или модифицировать твои файлы паролей, ключей и так далее, не сможет прописаться в автозагрузку KDE или GNOME. А если установить правильные права доступа на файлы своего основного пользователя (600, например), то и содержимое всех обычных файлов окажется в сохранности.

К сожалению, такой «псевдокарантин» не спасет систему от серьезной заразы, способной использовать локальные уязвимости и архитектурные недостатки Linux, поэтому придется ограничивать программу не только в возможности просматривать локальные файлы пользователей, но и лишать ее других ресурсов (скажем, сетевого обмена данными, возможности запуска других приложений или работы с локальными сервисами). Но обо всем по порядку.

Режем все

Хорошая, эффективная система изоляции приложений должна быть построена на многоуровневой основе, которая могла бы предотвратить компрометацию системы в случае выхода приложения за границу одного из уровней.

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

В свое время предпринималось множество попыток создания таких универсальных механизмов и продвижения их в ядро, но в результате пользователи получили не универсальность, а разброс технологий. Так что сегодня Linux насчитывает как минимум четыре «карантинные системы»:

1. Хостовые системы обнаружения вторжений (HIDS), такие как SELinux и AppArmor, позволяют очень тонко контролировать потребности приложений в ресурсах, но они слишком сложны в использовании рядовыми юзерами. Это учли Дэн Уэлш и Эрик Пэрис, создавшие утилиту sandbox, которая использует уже подготовленные жесткие политики для запуска приложений в песочнице.

2. Системный вызов ptrace позволяет отслеживать то, какими системными вызовами пользуется приложение, перехватывать их и блокировать в случае необходимости. Это наиболее популярный и единственный полностью кроссплатформенный способ ограничения, используемый в таких утилитах, как plash, sydbox и systrace, но у него есть минус - излишняя медлительность.

3. Пространства имен. Операционная система Plan 9 оставила свой отпечаток в Linux не только в виде виртуальной файловой системы procfs и кодировки UTF-8, но и в виде системного вызова clone() и так называемых пространств имен. Любой процесс Linux, начиная с ядра 2.4.19, может создать подпроцесс с совершенно иным представлением файловой системы. Если, например, родитель и все остальные процессы видят файловую систему как содержимое раздела /dev/sda1, смонтированного к корню, плюс /dev/sda5, смонтированного к /home, и procfs к /proc, то потомок может видеть вместо этого /dev/sda2, смонтированный к корню, плюс /dev/sda7, смонтированный к /root, и пустой каталог /proc.

Причем то, как будет выглядеть файловая система для потомка, полностью определяет родитель. Механизм пространств имен позволяет поместить процесс в свой обособленный файловый мирок, который не будет виден всем остальным процессам. В ядрах ветки 2.6 к файловому пространству имен были добавлены пространства имен процессов, сети и IPC. Так что теперь процесс может видеть не только другую ФС, но и другой набор системных процессов, сетевые интерфейсы (с собственными настройками маршрутизации и файрвола) и очереди IPC. На пространствах имен основана система LXC и простой, но удобный скрипт, написанный Стефаном Грабером (stgraber.org).

4. Режим seccomp позволяет полностью запереть приложение в самом себе, так что при попытке использовать любой системный вызов, кроме exit(), а также read() и write() в отношении уже открытых файловых дескрипторов, оно будет уничтожено. Для нас в таком жестком ограничении нет ничего полезного, но оно необходимо для работы некоторых клиентов GRID (которые представляют собой небольшие программы, получающие данные на вход и посылающие результат их обработки на выход), а также для изоляции плагинов и вкладок в браузере Google Chrome.

Кроме способности создавать многоуровневые системы изоляции, хорошая песочница должна уметь определять, какие действия должны быть разрешены приложению по умолчанию. Любой школьник понимает, что было бы глупо запрещать web-браузеру создавать сетевые соединения и в то же время разрешить ему выполнять системный вызов exec() или читать файл /etc/passwd, но как объяснить это программе, реализующей песочницу? Существует четыре возможных варианта:

1. Возложить работу по составлению правил на плечи пользователя, как это делают SELinux и AppArmor. Это самый эффективный и гибкий вариант, у которого есть всего один серьезный недостаток - сложность. Даже матерые сисадмины считают процесс составления правил SELinux нелегким занятием, что уж говорить о тех, кто просто решил запустить браузер в песочнице.

2. Мета-правила. Позволить пользователю самому составлять правила, облегчив задачу с помощью упрощения и группировки правил. Например, вместо массы разных правил типа «разрешить открывать TCP-соединения к порту такому-то такого-то хоста» сделать одно большое правило «разрешить сетевой доступ». Гибкость и безопасность системы снизятся, зато удобство использования резко возрастет. В SELinux такое возможно.

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

4. Сигнализировать пользователю каждый раз, когда приложение пытается задействовать ресурсы ОС. Этот вариант очень похож на тот, который используют многие файрволы Windows, выводящие окно с вопросом «Разрешить/Запретить» при инициализации нового сетевого соединения. Разумный вариант, который, тем не менее, требует от пользователя достаточно глубоких знаний в области архитектуры операционных систем.

Теперь, когда мы разобрались с тем, что должна уметь и как функционировать хорошая песочница, посмотрим на то, что нам могут предложить программисты. В следующих трех разделах мы изучим три разные реализации песочниц для приложений: утилиту sandbox, использующую возможности SELinux для помещения приложений в карантин; systrace, опирающийся на системный вызов ptrace; и простой python-скрипт, использующий пространства имен.

Sandbox - SELinux с человеческим лицом

Sandbox - это утилита, созданная для облегчения запуска непроверенных приложений в песочнице SELinux с максимальным уровнем изоляции. В отличие от «голого» SELinux, утилита не требует какой бы то ни было первоначальной настройки и может быть использована абсолютно любым пользователем, независимо от его уровня подготовки.

Функциональность приложения, запущенного под управлением sandbox, оказывается сильно ограниченной. В частности, программа не сможет открыть или создать ни один файл; доступ к сетевым функциям ОС будет полностью отрезан; несколько программ, запущенных под управлением sandbox, не смогут воздействовать друг на друга. В то же время программа сможет подгружать библиотеки, работать с уже открытыми файловыми дескрипторами, писать в текущий терминал и получать доступ к временному хранилищу данных, расположенному в оперативной памяти. Благодаря столь жестким ограничениям, sandbox оказывается почти бесполезным при запуске простых консольных утилит. Все, что можно сделать, это просто заставить непроверенную команду обработать какие-либо данные.

Например:

$ cat /etc/passwd | sandbox cut -d: -f1 > /tmp/users

Утилита cut, запущенная внутри песочницы, сможет получить доступ к стандартным входным и выходным потокам, а потому спокойно обработает представленные ей данные (содержимое /etc/passwd) и благополучно запишет их файл /tmp/users благодаря перенаправлению выходного потока (оно будет осуществлено уже за пределами песочницы). Если же мы попытаемся открыть файл /etc/passwd, находясь внутри песочницы, ничего не получится:

$ sandbox cut -d: -f1 /etc/passwd > /tmp/users
/bin/cut: /etc/passwd: Permission denied

Какие-то более серьезные запросы приложения также будут отклонены. И это могло бы свести полезность sandbox к нулю, если бы он не был основан на SELinux. Дело в том, что политику жесткого ограничения, применяемую утилитой, можно изменить и привести к нужному нам виду (политика носит имя sandbox_t, и ее можно отредактировать с помощью простой графической утилиты system-config-selinux, входящей в состав дистрибутива Fedora). Более того, sandbox можно заставить использовать совершенно другую политику, просто указав ее имя в качестве аргумента опции ‘-t’. Но это уже для тех, кто разбирается в SELinux.

Совсем иначе обстоит дело с графическими приложениями, которые sandbox также умеет вполне безопасно запускать внутри песочницы. Для этого предусмотрен флаг ‘-X’, использование которого приводит к нескольким коренным изменениям в поведении утилиты. Во-первых, происходит запуск X-сервера Xephyr, который работает внутри уже существующей X-сессии и используется в качестве изолятора запускаемого в песочнице приложения от корневого X-сервера. Внутри Xephyr происходит запуск менеджера окон Matchbox, который растягивает окно приложения на весь экран («экран» только в рамках Xephyr, который сам работает внутри окна корневого X-сервера).

Чтобы приложение смогло получить доступ к домашнему каталогу и каталогу /tmp, но не смогло прочитать хранящиеся в них файлы и навредить, предпринимается серия защитных действий:

  1. В рамках рандомно выбранного контекста SELinux создаются два пустых каталога в $HOMEDIR и /tmp.
  2. Происходит запуск SETUID-утилиты /usr/sbin/seunshare, в качестве аргументов которой передаются имена созданных каталогов, ID контекста SELinux и имя запускаемой программы.
  3. Утилита seunshare использует пространства имен (те самые, о которых мы говорили выше) для монтирования пустых каталогов поверх настоящих каталогов $HOMEDIR и /tmp.
  4. В новом файловом пространстве имен происходит запуск программы, которая теперь может обращаться только к виртуальному X-серверу и работать с «ненастоящими» каталогами /home и /tmp.

Для запуска графических приложений используется несколько иная политика SELinux: sandbox_file_t, которая открывает возможность работы с файлами домашнего каталога и каталога /tmp, хотя во всем остальном приложение остается сильно ограниченным в функциональности. Если же приложение должно получить доступ к сетевым возможностям, его следует запускать, указав в качестве политики sandbox_web_t (возможность использовать протокол HTTP) или sandbox_net_t (полный доступ к сетевым возможностям):

$ sandbox -X -t sandbox_web_t firefox google.com

Утилита уже включена в состав SElinux и может быть получена путем установки пакета selinux-policy версии не ниже 3.6.12 и пакета policycoreutils версии не ниже 2.0.62.

Systrace - обучаемая песочница

Несмотря на то, что главным бэкэндом к systrace является реализация механизма «system call interposition», доступная в NetBSD и OpenBSD, а также в виде патча в Linux, он вполне нормально работает с ptrace-бэкэндом (который хоть и тормозит, но полностью кроссплатформенный и не страдает от уязвимостей) и может предложить пользователям несколько уникальных характеристик, недоступных в других системах.

Главное отличие systrace от множества аналогов (в том числе sandbox) заключается в возможности контролируемого пользователем самообучения, когда утилита напрямую спрашивает юзера о необходимости запрета или разрешения определенных типов системных вызовов. Это позволяет очень гибко контролировать процесс исполнения программы и давать ей только то, что реально нужно. Кроме того, это отличный инструмент исследователя, который проще и нагляднее стандартного strace.

В большинстве дистрибутивов Linux systrace нет, но он по умолчанию включен в OpenBSD, а также очень прост в установке из исходников:

$ sudo apt-get install build-essential libevent-1.4-2 libevent-dev
$ wget http://www.provos.org/uploads/systrace-1.6g.tar.gz
$ tar -xzf systrace-1.6g.tar.gz
$ ./configure --prefix=/usr/local && make
$ sudo make install

Запускать приложения под управлением systrace просто. Достаточно указать имя программы в качестве аргумента:

По умолчанию утилита пытается задействовать возможности графической программы xsystrace для вывода вопросов на экран. Однако xsystrace не входит в стандартную поставку systrace, поэтому придется принудительно заставить утилиту использовать текстовый режим:

$ systrace -t ls

Теперь при каждой попытке выполнить системный вызов подопытная программа будет остановлена, а на экран выведен вопрос о том, стоит ли его запрещать. Ответом может быть достаточно сложное условное выражение, учитывающее аргументы системного вызова, но для простоты можно использовать слова «permit» (разрешить) и «deny» (запретить).

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

Поэтому в systrace предусмотрен режим «полного доверия», когда программа запускается с разрешением всего и генерирует файл правил, который затем можно отредактировать, запретив опасные системные вызовы - такие, например, как exec().
Чтобы запустить systrace в этом режиме, достаточно указать флаг ‘-A’:

$ systrace -A ls

Файл правил можно найти в каталоге ~/.systrace:

$ ls -l /home/j1m/.systrace/
-rw------- 1 j1m j1m 631 2011-01-04 12:24 bin_ls

Однако надо понимать, что «режим доверия» придуман для того, чтобы защитить программы от возможных атак, и для запуска подозрительного кода он не подходит, в этом случае придется самостоятельно запрещать или разрешать системные вызовы по мере выполнения программы.

Пространства имен или sandbox-2

Sandbox, написанный Стефаном Грабером, - это крохотная утилита командной строки, которая использует пространства имен, чтобы запереть подопытное приложение в песочнице. Она выгодно отличается от всех своих аналогов тем, что вместо запретов использует метод виртуализации ресурсов, помещая программу в изолированную среду исполнения, которая не соприкасается с основной системой.

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

В сущности, утилита выполняет всего пять простых действий:

  1. Создает новый пустой каталог (назовем его $NEWROOT) и монтирует к нему корневой каталог системы в режиме copy-on-write (для этого используется оверлейная файловая система aufs).
  2. Монтирует каталог /home к $NEWROOT/home.
  3. Создает новое пространство имен для всех возможных ресурсов.
  4. Подключает procfs к каталогу $NEWROOT/proc.
  5. Делает chroot в каталог $NEWROOT и запускает приложение.

В результате программа оказывается в довольно интересной среде, которая внешне похожа на среду обычной системы, но отличается от нее тем, что модификация любого файла, за исключением файлов каталога /home (хотя это настраивается), будет видна только самому приложению. Другие процессы и каналы коммуникации IPC не будут видны из песочницы, а значит, не смогут быть эксплуатированы. Программа сможет изменить сетевые настройки песочницы, но эти изменения также не отразятся на основной системе.

Утилита не включена ни в один дистрибутив, поэтому ее придется получать и компилировать самостоятельно:

$ sudo apt-get install bzr
$ bzr branch lp:~stgraber/+junk/sandbox
$ cd sandbox; make
$ sudo make install

После этого запускаем графический интерфейс sandbox-gui, с помощью которого можно изменить некоторые настройки песочницы (поддержка сети, подключение реальных каталогов /home и /tmp) и запустить приложение. Программа требует права суперпользователя, поэтому придется ввести свой пароль.

Выводы

Несмотря на отсутствие единого стандартного интерфейса для ограничения приложений в возможностях, Linux обладает всем необходимым для безопасного запуска приложений в карантине.

Описанные в статье инструменты - лишь малая часть того, что было создано за многие годы, так что если тебе не приглянулась ни одна из систем, всегда можно найти достойную альтернативу.

Начиная еще с версии 2.2, ядро Linux реализует механизм под названием capabilities, позволяющий наделять приложения полномочиями суперпользователя только для выполнения строго определенных функций (например, приложение может выполнять перезагрузку системы, но не способно получить доступ к другим возможностям суперпользователя).

Info

  • Для тестовых запусков приложений, требующих права суперпользователя, можно использовать утилиту fakeroot, позволяющую создать иллюзию того, что программа запущена пользователем root (становится возможным изменить любой файл системы).
  • QubesOS (qubesos.org) - Linuxдистрибутив, полностью построенный на идее изоляции процессов друг от друга с помощью виртуализации.
  • Утилиту sandbox, основанную на SELinux, легко заставить примонтировать выбранные каталоги к каталогам / home/$USER и /tmp. Для этого есть опции ‘-H’ и ‘-T’: «sandbox -H ~/fakehome -T ~/ faketmp vi».



Top