Обеспечение безопасности ресурсов

Вы обязательно должны знать такую возможность ColdFusion MX как "безопасность ресурса" (sandbox security). Функция "безопасность ресурса" предлагает особое управление ресурсами (источники данных, файлы, директории, теги, функции и многое другое), с которыми работают шаблоны ColdFusion. Независимо от того, кто вы: разработчик или администратор - вы должны знать все возможности этой функции.

Если вы помните, какие были возможности по обеспечению безопасности в ColdFusion 5 и 4, то вы сразу же заметите, что ColdFusion MX в этом смысле гораздо более легко настраиваем, а также содержить для этого дополнительные возможности.

Следует отметить, что в редакции ColdFusion MX Enterprise эта возможность называется "sandbox security", а в редакции ColdFusion MX Professional - "resource security". Зачастую под этими двумя названиями подразумевается одно и то же, что приводит в некоторое замешательство, т.к. в одних случаях действительно подразумевается одно и то же, а в других случаях - разное.

 

Ограничение доступа к ресурсам в целях безопасности

Возможность "sandbox/resource security" может быть задействована по желанию и не обязательна к использованию. По-умолчанию после установки ColdFusion MX сервера она отключена.

Поскольку код ColdFusion запускается под управлением ColdFusion сервера, то он может иметь доступ к любым ресурсам (с любыми разрешениями), а именно к тем, которые доступны той учетной записи операционной системы, под которой запущен ColdFusion сервер. если вы не включите "sandbox/resource security", то такие теги как, например, <cffile>, <cfcontent> и <cfdirectory> могут иметь доступ к таким файлам и директориям, доступ к которым совсем не желателен. То же самое относится к таким функциям, как GetTempFile, DirectoryExists, FileExists, GetProfileString и SetProfileString.

Более того, некоторые теги ColdFusion могут обладать значительно большей силой. Например, злоупотребление в использовании тегов cfregistry и cfexecute может привести к сбою сервера.

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

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

 

В чем отличие "sandbox security" от "resource security"?

Более подробно мы столкнемся с их различиями далее, когда будем рассматривать их настройку, а пока просто имейте в виду, что в редакции Enterprise вы можете создавать неограниченное количество так называемых sandbox'ов (поэтому используется выражение "sandbox security") для каждого приложения, а в редакции Prefessional понятия sandbox нет (поэтому используется выражение "resource security") и установленные настройки распространяются сразу на все приложения.

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

 

Включаем и настраиваем "sandbox/resource security"

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

Шаг 1: Открываем Административную оболочку, а в ней страницу "Sandbox Security"
  1. Откройте Административную оболочку. Не будем разбирать по какому адресу она находиться, т.к. это предмет обсуждения другой документации.
  2. Выберите опцию "Resource Security" (в редакции Professional) или опцию "Sandbox Secirity" (в редакции Enterprise) в нижней части навигационного меню слева. Страницы каждой из них показаны на рисунках 1a и 1б ниже:

Страница 'Resource Security' в ColdFusion MX Professional.

Рисунок 1a: Страница "Resource Security" в ColdFusion MX Professional.

Страница 'Sandbox Security' в ColdFusion MX Enterprise.

Рисунок 1б: Страница "Sandbox Security" в ColdFusion MX Enterprise.

Шаг 2а: Ставим галочку на "Enable ColdFusion Security"

Для обоих редакций, перед тем как установки управления ресурсами начнуть действовать, следует включить опцию "Enable ColdFusion Security". Как уже было сказано выше, по-умолчанию эта опция отключена. Главное удобство заключается в том, что можно сначала установить нужные вам настройки, а потом разом их все включить.

Поставьте галочку на "Enable ColdFusion Security" и подтвердите изменения, нажав на кнопку "Submit Changes".

Шаг 2б: Перезапускаем ColdFusion MX сервер

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

Теперь, когда мы включили безопасность и перезапустили ColdFusion MX сервер, любые проводимые нами изменения будут вступать в силу сразу же. Не нужно будет возвращаться на страницу "Sandbox/Resource Security" и нажимать кнопку "Submit Changes", а также больше не нужно перезаускать сам ColdFusion MX сервер.

Шаг 3: Создаем Sandbox

Создание sandbox'ов, как уже было сказано выше, доступно только в редакции Enterprise и, если у вас редакция Professional, то вы сразу можете переходить к следующему шагу.

Когды вы в первый раз включили безопасность (Шаг 2), то ColdFusion по умолчанию предлагает 2 sandbox'а: ColdFusion CFIDE System Directory and ColdFusion WEB-INF System Directory. Пока вам не нужно о них беспокоиться: их можно редактировать, но нельзя удалить. Заметьте, что если вы не определили ни одного sandbox'а, то любой код в любой директории будет отрабатываться без ограничений.

Чтобы определить уровень доступа к какой-либо директории, нужно создать для нее sandbox:

  1. В поле Add Security Sandbox укажите путь к местоположению кода, действия которого нужно ограничить. Этот путь можно напечатать, а можно и просто задать, нажав на кнопку "Browse Server".

    Заметьте, что вы можете использовать абсолютный путь к местоположению файлов, а также и относительный, относительно маппинга, установленного в разделе "Mappings" Административной оболочки.

    Когда вы указываете путь для sandbox'а, важно запомнить, что настройкам данного sandbox'а будут подчиняться как указанный каталог, так и все его подкаталоги. С другой стороны, если вы создадите sandbox для поддиректории другого sandbox'a, то эта поддиректория и все ее поддиректории будут подчиняться настройкам нового sandbox'a. По этой причине, при создании нового sandbox'a, в него можно копировать настройки уже существующего sandbox'а.
  2. Нажмите кнопку "Add" - "Добавить". Заметьте, что вы не сможете добавить путь к несуществующему каталогу. Теперь созданный вами sandbox появился в списке Defined Directory Permissions на странице "Sandbox/Resource Security". При создании sandbox'а вам не будет предложено сразу отредактировать его настройки. Для этого нужно открыть его на редактирование нажав на иконку Edit в колонке Actions или на название самого sandbox'а в колонке Directory.
  3. Откройте только что созданный вами sandbox для редактирования.
  4. Перед вами появится окно со всеми доступными настройками для выбранного вами sandbox'а.
Также вы можете удалить sandbox из списка Defined Directory Permissions нажав на иконку Delete в колонке Actions.

Шаг 4: Настраиваем управление ресурсом

Теперь мы может определить доступ кода к источникам данных, тегам, функциям и т.п. Предлагаемой нам диалоговое окно состоит из 5 вкладок: Шаг 4а: Ограничиваем доступ к источникам данных

Первая вкладка - это "Data Sources" - "Источники данных". Чтобы отключить один или более источников данных, выберите его в окне Enabled Data sources слева (если вы хотите сразу выбрать несколько источников данных, то при их выборе удерживайте нажатой клавишу Ctrl). Затем нажмите на кнопку ">>" в центре окна, чтобы переместить выбранные вами источники данных в окно Disabled Data sources справа. Теперь, при вызове оключенного вами источника данных, на странице будет показано сообщение об ошибке. Значение опции << ALL DATASOURCES >> означает, что выбрав эту опцию, вы разом можете отключать или включать все источники данных, указанные на странице "Data Sources" Административной оболочки.

Если вы не сделали никаких изменений (т.е. в окне Disabled Data sources не указано ни одного источника данных), то ни на один источник данных ограничений не установлено. Такой же принцип применим и ко всем остальным вкладкам, т.е. если вы не указали никаких ограничений, то никаких ограничений для данного типа ресурса и нет.

Тестируем настройки sandbox'а

Перед тем, как продолжит рассказ о настройке других типов ресурсов, следует продемонстрировать "sandbox/resource security" в действии.

Во-первых, следует напомнить, что не следует проводить тесты на самом веб сервере во избежании случайных настроек, которые могут "задеть".другие приложения. Во-вторых, перед проведением тестов убедитесь что безопасность включена (Шаг 2). Помните, что по-умолчанию эта опция отключена. В-третьих, после того, как вы включили безопасность (Шаг 2) перезапустили ли вы ColdFusion MX сервер? Последние два совета часто забывают, поэтому посчитал нужным напомнить вам о них еще раз.

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

Шаг4б: Ограничиваем доступ к тегам и функциям

Используя вкладки CF Tags и CF Functions вы можете указать определенные теги и функции, которые не смогут отрабатываться. Вид этих двух вкладок показан на рисунках 2 и 3 соответственно.

Настройки вкладки CF Tags в ColdFusion MX Prefessional

Рисунок 2. Настройки вкладки CF Tags в ColdFusion MX Prefessional

Настройки вкладки CF Functions в ColdFusion MX Prefessional

Рисунок 3. Настройки вкладки CF Functions в ColdFusion MX Prefessional

Зачем нужно ограничивать доступ к тегам и функциям ColdFusion? По одной причине, вам возможно захочется ограничить доступ пользователей к таким тегам как, например, <cfregistry> и <cfexecute>, благодаря которым можно получить доступ к системной информации и ресурсам. Сайты под редакцией Professional желательно должны иметь запрет обработку таких тегов, поскольку вряд ли существует доверие сразу ко всем разработчикам. В редакции Enterprise желательно установить такой запрет на всю папку с сайтами, а потом создавать дополнительные sandbox'ы с дополнительными настройками.

По другой причине, вам, возможно, понадобиться ограничить обработку таких тегов, благодаря которым можно получить доступ к файлам и каталогам. Впрочем, назначить уровень доступа к файлам и каталогам можно и в четвертой вкладке - Files/Dirs (Файлы/Каталоги).

Шаг 4в: Ограничиваем доступ к файлам и каталогам

Вкладка Files/Dirs (Файлы/Каталоги) возможно самая важная из всех. Ее вид показан на рисунке 4.

Настройки доступа к файлам и каталогам в ColdFusion MX Prefessional

Рисунок 4. Настройки доступа к файлам и каталогам в ColdFusion MX Prefessional

Ограничение доступа к файлам и каталогам не так просто как ограничение доступа к источникам данных или к тегами или функциям. Во-первых, здесь нужно указать путь к файлу или каталогу, доступ к которым нужно ограничить. Обратите внимание, что в поле File Path путь к файлу или каталогу можно напечатать или указать, нажав на кнопку "Browse Server".

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

В-третьих, обозначив определенный файл или каталог, вы разрешаете доступ только к данному файлу или каталогу. Любые попытки получить доступ к другим файлам или каталогам будут проигнорированы.

Если вы хотите предоставить доступ ко всем файлам на сервере, то не нужно указывать все каталоги по отдельности. Достаточно воспользоваться ключевым словом "<< ALL FILES >>", которое нужно указать в поле File Path. В редакции Professional это ключевое слово уже указано по-умолчанию.

В редакции Enterprise по-умолчанию предоставляется доступ ко всем файлам в пределах данного sandbox'а. Это очень удобно, но тем не менее следует добавить опцию "<< ALL FILES >>" для предоставления более широких полномочий доступа - кроме того, будет более благоразумно установить, к каким файлам и каталогам будет иметь доступ разработчик данного приложения.

В четвертых, очень важно отметить, что указывая путь к каталогу, вы можете делать это тремя способами. Например, если вы хотите предоставить доступ к каталогу c:\cfusionmx\wwwroot\cfmxdemo, то вот три варианта пути к нему:

с:\cfusionmx\wwwroot\cfmxdemo\
c:\cfusionmx\wwwroot\cfmxdemo\*
c:\cfusionmx\wwwroot\cfmxdemo\-
Первый вариант предоставляет доступ только к самому каталогу, но не к файлам и подкаталогам внутри него, второй способ - к самому каталогу, к файлам в нем, к подкаталогам и к файлам всех подкаталогов (это наиболее часто используемый способ), третий способ - к самому каталогу, к файлам в нем, к подкаталогам, но не к файлам в подкаталогах.

Для каждого установленного вами пути вы можете назначать привелегии: read (чтение), write (запись), execute (исполнение) или delete (удаление). Привелегии write и execute распространяются только на файлы, а read и delete и на файлы, и на каталоги.

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

Если вам кажется, что указанные вами изменения еще не вступили в силу, то вы должны нажать кнопку Add Files/Paths, если вы добавляете новый путь, или Edit Files/Paths, если вы редактируете настройки. Как уже было сказано выше, указанные изменения на этой странице вступают в силу сразу же и нет необходимости нажимать "Finish", чтобы вернуться на страницу, показанную на рисунке 1.

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

Шаг 4г. Ограничиваем доступ к серверам/портам

Доступ к определенным серверам может осуществлятся с помощью таких тегов как, например, <cfhttp>, <cfmail>, <cfldap> и т.п. Настройки вкладки "Server/Ports" позволяют нам ограничивать и этот доступ. Ее вид показан на рисунке 5.

Настройки доступа к серверам в ColdFusion MX Prefessional

Рисунок 5. Настройки доступа к серверам в ColdFusion MX Prefessional

Принцип работы с этой вкладкой такой же как и с вкладкой "Files/Dirs". Здесь нужно указывать названия доменных имен или IP адресов, доступ к которым нужно ограничить. Если не указать никаких доменных имен или IP адресов, то по-умолчанию доступ открыт ко всем серверам.

Будет ошибкой думать, что можно указывать только IP адреса. Также можно указывать и названия доменов (например, yahoo.com или www.google.com), причем первую часть доменного имени - 'www.', можно не указывать, если вы хотите позволить все виды доступа к данному домену. Также, не обязательно указывать номер порта, если вы хотите разрешить все виды доступа к данному домену или IP адресу.

И в заключении, как и во вкладке "Files/Dirs", чтобы изменения вступили в силу, достаточно только нажать Add (или Edit) IP Address. Одно нажатие "Finish" изменения не сохраняет.


Источник: www.macromedia.com/desdev/security/articles/sandbox_01.html

 


Hosted by uCoz