Администрирование и ведение журнала
С помощью средства Windows Media Administrator контролируется управление интерактивным содержимым и файлами, отслеживается общий уровень активности системы в режиме реального времени, создаются журналы, содержащие информацию о клиенте и о событиях сервера для выявления нежелательной активности.
Совет. Служба Media Services является относительно новой технологией, и в настоящее время в ней обнаруживаются все новые и новые пробелы в безопасности; по этой причине следует быть в курсе новостей, освещаемых на сайте www.microsoft.com/windows/windowsmedia.
Безопасность исходящего трафика
Для всех подключений к удаленным доменам можно установить шифрование исходящего трафика по умолчанию или настроить отдельные домены на свои собственные параметры шифрования во вкладке Delivery (Доставка). Для шифрования всех исходящих сообщений, направленных на удаленные домены, нажмите на кнопку Outbound Security (Безопасность исходящего трафика) в окне Properties (Свойства) и отметьте опцию TLS Encryption (Шифрование TLS) (см. рисунок). Безопасность исходящего трафика определяет аутентификацию SMTP-сервера на другом SMTP-сервере, а также шифрование исходящих сообщений. Чтобы настроить параметры по умолчанию для отдельного удаленного домена, создайте новый домен в области Domains (Домены). Откройте окно Properties для удаленного домена и нажмите на кнопку Outbound Security (Безопасность внешнего трафика). После этого отметьте опцию TLS Encryption (Шифрование TLS) для настройки параметра; помните, что устанавливаемые здесь параметры применяются только к домену, к которому относится данный объект. Для
шифрования входящих сообщений нужно установить сертификат сервера. Отправка зашифрованных сообщений не требует сертификата на локальном сервере.
Безопасность каталога
С помощью этой вкладки можно ограничить доступ по IP-адресам пользователей. По умолчанию доступ к FTP-сайту разрешен со всех IP-адресов, но иногда нужно установить доступ только с IP-адресов, лежащих в определенном диапазоне; этими пользователями могут быть, например, клиенты компании или пользователи интранет-сети. Это можно сделать через блокировку доступа со всех компьютеров с последующим указанием доверенных IP-адресов в виде исключений (см. рис. 10.5).
Рис. 10.5. Данный FTP-сайт разрешит доступ только компьютеру с IP-адресом 192.168.16.5
Можно сделать наоборот – разрешить всем компьютерам доступ к сайту, после чего указать отдельные компьютеры, доступ с которых запрещен. Это полезно в случае, если в результате анализа журналов системы выявлены подозрительные действия с определенного IP-адреса и нужно запретить доступ к сайту с соответствующего компьютера. Можно запретить доступ и по имени домена, чтобы конкурентам с сайта rival.com был недоступен ваш FTP-сайт.
Совет. При запрете доступа к FTP-сайту по имени домена служба FTP будет работать медленнее, так как FTP-серверу теперь придется выполнять обратный поиск и определять, является ли IP-адрес компьютера, с которого осуществляется попытка доступа, запрещенным для доступа
FTP повышает общую эффективность интернет-служб, однако следует в обязательном порядке изменить настройки по умолчанию для обеспечения безопасности службы и определить, как и кем она будет использоваться.
Безопасность Windows Media
Функции безопасности Windows Media ограничивают доступ к медиа-данным на сервере Windows Media и реализовывают платное содержимое. С помощью последней версии Windows Media Rights Manager SDK (Пакет разработки диспетчера прав) создаются приложения, выполняющие шифрование или пакетирование цифровых медиа-файлов и выпускающие лицензии на них. Пакетный файл Windows Media содержит версию файла, зашифрованную при помощи ключа, чтобы открыть файл смог только тот пользователь, который получил на него лицензию. Лицензия выдается отдельно от пакетного файла Windows Media, поэтому содержимое и лицензию на это содержимое можно получить в разное время. Зашифрованные файлы передаются на компьютер в потоковом режиме или загружаются на компьютер пользователя.
Домашний каталог
До сих пор вы настраивали число пользователей, имеющих право на доступ к сайту, способ их аутентификации и создавали сообщение, отображаемое при входе. Теперь нужно определить, какие действия пользователи могут выполнять после установки соединения с сервером. Определите используемый FTP-сайтом каталог или виртуальный каталог на вкладке Home Directory (Домашний каталог) (см. рис.10.4). Никогда не используйте общее сетевое расположение, так как оно управляется посредством привилегий доступа учетной записи общего расположения. Это сделает настройку безопасного доступа к нему более сложной, чем управление, что не соответствует уровню риска. Если позволяет бюджет, установите FTP-сервер на другом сервере, нежели основной сервер IIS. В противном случае расположите корневые папки на другом томе. Это не только изолирует FTP-службу, но и упростит управление дисковыми квотами в Windows 2000 и разрешением на запись.
Рис. 10.4. Никогда не используйте общее расположение в качестве каталога для FTP-сайта
После выбора расположения каталога включите для него разрешение Read (Чтение) или Write (Запись). Если предоставить доступ к FTP-сайту для чтения, пользователь увидит физические каталоги и файлы, имеющиеся в домашнем каталоге, а также все созданные виртуальные каталоги, и сможет считывать и загружать любые файлы. Разрешение на запись позволит пользователям отгружать файлы на FTP-сайт. Если необходимо предоставить разрешение Write (Запись) для каталога, то присвойте это разрешение отдельному виртуальному каталогу, не имеющему разрешение на чтение. Это делается по той причине, что предоставление анонимным пользователям права на чтение и запись в один и тот же каталог создает так называемый warez-сайт. Хакеры используют такие сайты для отгрузки пиратского программного обеспечения или музыкальных файлов, что обеспечит вам серьезные проблемы, связанные с авторскими правами. Разрешение Read (Чтение) для отгруженных файлов присваивайте только внутренним пользователям с соответствующими правами.
Контроль доступа
На вкладке Access (Доступ) (см. рис. 10.8) находятся параметры, предназначенные для настройки доступа клиентов к виртуальному серверу NNTP и безопасности передачи данных, включая аутентификацию, шифрование, ограничение чтения или публикации статей, разрешение или запрет загрузки NNTP-серверами групп новостей. Для настройки методов аутентификации, поддерживаемых службой NNTP, нажмите на кнопку Authentication (Аутентификация).
Рис. 10.8. Используйте вкладку Access (Доступ) для настройки основных параметров безопасности NNTP
Если группа новостей доступна всем пользователям, то включите опцию Allow Anonymous Connections (Разрешить анонимные подключения). Смените учетную запись IUSR_имя-компьютера, используемую анонимными пользователями, нажав на кнопку Anonymous (Анонимный доступ). Укажите учетную запись, созданную специально для анонимных подключений NNTP. Не включайте опцию Basic Authentication (Базовая аутентификация), так как это разрешит передачу имен пользователей и паролей в открытом виде.
Если у пользователей имеется клиент новостей, например, Microsoft Outlook Express, поддерживающий аутентификацию Windows Security Package (Пакет безопасности Windows), выберите его для обеспечения безопасного входа и аутентификации пользователей групп новостей.
В качестве альтернативы потребуйте SSL-аутентификацию клиентов, чтобы пользователи при входе вводили SSL-зашифрованные имена и пароли. При наличии у пользователей цифровых сертификатов свяжите эти сертификаты с учетными записями Windows, включив поддержку сертификатов клиентов. Это предотвратит обманное получение доступа злоумышленником под видом легального пользователя. Рекомендуется использовать именно этот подход, если статьи групп новостей являются конфиденциальными: ведь файловые разрешения NTFS и аудит применимы к каждому пользователю. На рисунке 10.9 показаны параметры NNTP-сервера, требующие от пользователей предоставления цифрового сертификата, связанного с учетной записью Windows.
На вкладке Access (Доступ) (см. рис. 10.8) находятся параметры, предназначенные для настройки доступа клиентов к виртуальному серверу NNTP и безопасности передачи данных, включая аутентификацию, шифрование, ограничение чтения или публикации статей, разрешение или запрет загрузки NNTP-серверами групп новостей. Для настройки методов аутентификации, поддерживаемых службой NNTP, нажмите на кнопку Authentication (Аутентификация).
Рис. 10.8. Используйте вкладку Access (Доступ) для настройки основных параметров безопасности NNTP
Если группа новостей доступна всем пользователям, то включите опцию Allow Anonymous Connections (Разрешить анонимные подключения). Смените учетную запись IUSR_имя-компьютера, используемую анонимными пользователями, нажав на кнопку Anonymous (Анонимный доступ). Укажите учетную запись, созданную специально для анонимных подключений NNTP. Не включайте опцию Basic Authentication (Базовая аутентификация), так как это разрешит передачу имен пользователей и паролей в открытом виде.
Если у пользователей имеется клиент новостей, например, Microsoft Outlook Express, поддерживающий аутентификацию Windows Security Package (Пакет безопасности Windows), выберите его для обеспечения безопасного входа и аутентификации пользователей групп новостей.
В качестве альтернативы потребуйте SSL-аутентификацию клиентов, чтобы пользователи при входе вводили SSL-зашифрованные имена и пароли. При наличии у пользователей цифровых сертификатов свяжите эти сертификаты с учетными записями Windows, включив поддержку сертификатов клиентов. Это предотвратит обманное получение доступа злоумышленником под видом легального пользователя. Рекомендуется использовать именно этот подход, если статьи групп новостей являются конфиденциальными: ведь файловые разрешения NTFS и аудит применимы к каждому пользователю. На рисунке 10.9 показаны параметры NNTP-сервера, требующие от пользователей предоставления цифрового сертификата, связанного с учетной записью Windows.
Настройка сервера индексов
Так как сервер индексов позволяет пользователям осуществлять поиск на сайте, необходимо аккуратно следить за тем, какие файлы и папки индексируются сервером; в противном случае пользователи смогут найти и прочитать важную информацию, не предназначенную для общего пользования. Вы можете включить индексирование на уровне сервера, веб-сайта или папки. Параметры уровня сервера применяются к индексируемому содержимому на всех веб-сайтах сервера; параметры уровня сайта применяются ко всему индексируемому содержимому на конкретном сайте; параметры уровня папки применяются ко всему индексируемому содержимому внутри рассматриваемой папки и всех ее подпапок. Управление сервером индексов осуществляется с помощью оснастки MMC Index Server Manager (Диспетчер сервера индексов) или консоли MMC Computer Management (Управление компьютером). Для открытия консоли Computer Management нажмите на Start (Пуск), выберите Settings\Control Panel\Administrative Tools\Computer Management (Настройка\Панель управления\Администрирование\Управление компьютером). В дереве консоли разверните пункт Services and Applications (Службы и приложения), после чего щелкните на Indexing Service (Служба индексирования).
После открытия Indexing Service вы увидите два каталога по умолчанию – System и Web. Каталог System содержит диск C и должен быть удален немедленно. Каталог Web содержит папку inetpub\wwwroot и другие папки, которые нельзя индексировать на защищенном сервере, например, папку iisadmin (см. рисунок).
Следует удалить и этот каталог, после чего создать новый каталог, добавив в него только те папки, в которых пользователи веб-сайта будут осуществлять поиск данных. Это уменьшит риск индексирования и открытия доступа к важным документам или системным паролям, включенным в сценарии.
Важно. Сервер индексов может индексировать и предоставлять доступ к документам в виртуальном каталоге, указывающем на удаленное расположение. Отключите опцию Add Network Share Alias Automatically (Автоматически добавлять псевдоним сетевого расположения) на вкладке Tracking (Отслеживание) окна Index Server Properties (Свойства сервера индексов), чтобы запретить случайное добавление общих сетевых устройств в каталог. Как уже неоднократно говорилось, ни в коем случае не следует использовать удаленные расположения в архитектуре веб-сайта.
Обеспечение безопасности NNTP-сайта
Для управления службой NNTP через Internet Services Manager необходимо быть членом локальной группы Administrators (Администраторы). Щелкните правой кнопкой на объекте NNTP, чтобы отобразить окно Properties (Свойства), содержащее четыре вкладки (см. рис. 10.7).
Как и для FTP, включите ведение журнала активности NNTP для всех групп новостей на уровне виртуального сервера NNTP и на уровне отдельного виртуального каталога. Все события, генерируемые службой NNTP, заносятся в системный журнал, а в индикаторе производительности Performance Monitor появятся счетчики для службы NNTP.
Рис. 10.6. С помощью окна Properties (Свойства) каталога по умолчанию укажите каталог, который будет использовать служба NNTP
увеличить изображение
Рис. 10.7. Нажмите на кнопку Connection (Подключение) на вкладке General (Общие), чтобы установить пределы подключений для NNTP-сервера
Обеспечение безопасности сайта
FTP-серверы управляются и настраиваются (как и IIS) с помощью программы Internet Services Manager (ISM), осуществляющей контроль над отдельными FTP-сайтами. Службой FTP можно управлять с помощью консоли Services Management Console или команды Net (см. раздел "Запуск и остановка служб").
Параметры FTP-сайта можно настраивать на трех уровнях: главном, уровне сайта и уровне виртуального каталога. Параметры на главном уровне и уровне сайта наследуются всеми новыми FTP-сайтами. Откройте список Master Properties (Главные свойства) (см. рис. 10.1), щелкнув правой кнопкой мыши на узле веб-сервера в диспетчере Internet Services Manager.
Отдельные параметры, настроенные на уровне конкретного сайта и виртуального каталога, будут игнорировать родительские параметры. Можно создать на сервере несколько FTP-сайтов, чтобы FTP-сервер не выглядел единственным сервером.
Рис. 10.1. В окне IIS Master Properties (Главные свойства IIS) настраиваются значения по умолчанию, наследуемые всеми сайтами
Ограничение полосы пропускания, настраиваемое в окне Internet Server Properties (Свойства сервера интернета), применяется ко всем службам интернета, работающим на сервере IIS; однако, в отличие от веб-сайтов, невозможно управлять этим ограничением для отдельного FTP-сайта. Если сервер IIS использует то же интернет-подключение, что и внутренние пользователи, примените параметр Maximum Network Use (Максимальное использование сети), чтобы запретить использование интернет-соединения службами FTP и Web в случаях повышенной активности или атаки на отказ в обслуживании. Выберите параметр Enable Bandwidth Throttling (Включить ограничение полосы пропускания) и введите максимальное число килобайт в секунду, доступное серверу IIS (см. рис. 10.1).
Мы рассмотрим каждый из параметров службы, влияющий на уровень защищенности сервера. Среди этих параметров выделяются параметры производительности, предотвращающие атаки на отказ в обслуживании. Для корректной настройки всех создаваемых FTP-сайтов необходимо сконфигурировать главные свойства FTP сервера интернета. Щелкните правой кнопкой мыши на объекте в диспетчере ISM и в появившемся меню выберите Properties (Свойства). После этого в ниспадающем списке Master Properties (Главные свойства) выберите FTP Service (Служба FTP) и нажмите на кнопку Edit (Изменить), чтобы открыть окно FTP Service Master Properties (Главные свойства службы FTP) (см. рис. 10.2).
Рис. 10.2. Уменьшите число соединений по умолчанию в окне FTP Service Master Properties (Главные свойства службы FTP), равное 100 000, если не требуется поддержка такого количества подключений
Обеспечение безопасности SMTP-сервера
Управление сервером SMTP осуществляется из консоли ISM Management, поэтому для изменения его параметров нужно быть членом локальной группы Administrators (Администраторы). Чтобы открыть диалоговое окно Properties (Свойства) (см. рис. 10.12), щелкните правой кнопкой мыши на сервере SMTP и в появившемся меню выберите Properties. Необходимо сразу же настроить параметры соединения и включить ведение журнала. Можно использовать такие же настройки журнала, что и для IIS.
Рис. 10.12. Окно SMTP Server Properties (Свойства сервера SMTP) содержит свой собственный набор вкладок
Вспомнив, как установлены ограничения на подключение к FTP-серверу, нужно ограничить максимальное число подключений к серверу SMTP, чтобы ни один отдельный домен не смог полностью контролировать входящие и исходящие подключения службы SMTP. Нажмите на кнопку Connection (Подключение) на вкладке General (Общие) и установите число соединений и временные периоды на нужные значения.
Ограничение доступа к содержимому посредством каталогов
Каталог сервера индексов представляет собой папку с файлами, содержащими данные индексирования. Сервер индексов записывает в каталог генерируемую информацию о содержимом и свойствах. В этом каталоге осуществляется управление разрешением на доступ пользователей к индексированным документам. Каждый раз при отправке пользователем запроса сервер индексов проверяет данные о защищенности файла. В результат запроса включаются только разрешенные документы. Это отличает данную систему от других поисковых машин, которые отображают ссылки на все документы, удовлетворяющие заданным условиям поиска, даже если пользователь не может прочесть сам документ.
Индексирование на сервере индексов Microsoft Index Server основано на виртуальных каталогах, и не существует метода исключения определенных физических каталогов из процесса индексирования.
Ограничение подключений
Если служба FTP предназначена для нескольких отдельных клиентов или сотрудников, на сервере не нужна поддержка множества единовременных подключений, так как это упрощает хакерам реализацию атаки на отказ в обслуживании. На вкладке FTP Site (FTP-узел) в области Connection (Подключение) в поле Limited To (Ограничено) введите соответствующий предел согласно назначению сервера. После этого на вкладке Message (Сообщение) включите отображение сообщения пользователям, пытающимся подключиться к серверу после достижения максимально допустимого числа подключений. В поле Connection Timeout (Время простоя соединения) введите время (в секундах), по истечении которого сервер отключит неактивных пользователей. Такая настройка параметров обеспечит закрытие всех подключений, если это не сделает протокол FTP.
Ограничение удаленного администрирования
Некоторые функции управления сервером индексов по умолчанию доступны с удаленного веб-сайта, что представляет угрозу безопасности, так как посторонний пользователь может внести несанкционированные изменения. Если нужен дополнительный контроль над административными операциями, примените контроль разрешений доступа для файлов .ida, .idq и .htx, определяющих метод вывода результатов сервером индексов.
Совет. Все административные операции сервера индексов управляются посредством перечня контроля доступа в ключе системного реестра HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ ContentIndex.
Операторы
Вкладка Security (Безопасность) позволяет наделить ограниченными полномочиями пользователей и группы на SMTP-сервере, однако эти полномочия не относятся к другим аспектам IIS в отличие от других типов операторов.
Несмотря на то, что SMTP-служба является полезным компонентом с интересными возможностями, она очень далека от полнофункционального почтового сервера. Тем не менее, эта служба принесет немалую пользу, если будет обеспечена ее безопасность и правильная настройка.
Отключение пользователей
В окне Properties (Свойства) FTP-сайта выясните, какие пользователи в данный момент подключены к сайту, нажав на кнопку Current Sessions (Текущие сеансы), как показано на рисунке. Анонимные пользователи отображаются с использованием вопросительных знаков.
Для быстрого отключения определенного пользователя (например, возникло подозрение, что он использует сервер не по назначению) выделите его (или их) и нажмите на кнопку Disconnect (Отключить) или отключите всех пользователей, нажав на кнопку Disconnect All (Отключить всех).
Совет. Используйте Internet Services Manager (Диспетчер служб интернета) для управления отдельными FTP-сайтами. Например, если на сервере находятся два FTP-сайта, можно остановить службу FTP на одном сайте, но оставить второй сайт работающим. Суть этого действия заключается в том, что служба FTP продолжает выполняться, а остановленный FTP-сайт переводится в автономный режим.
Параметры файла запроса данных интернета
В файле Internet Data Query строка CiRestriction= представляет собой запрос, который обрабатывается сервером индексов, а строка CiTemplate= указывает файл, предназначенный для приема информации из файла .idq. В этой строке, как правило, указывается файл с расширением .htx. Избегайте изменения параметров строки CiTemplate, так как это может привести к случайной передаче через сеть файлов в каталогах сценариев с разрешением только на выполнение. Например, если файл .idq содержит строки
[Query] CiTemplate=%CiTemplate%
то клиент может отправить URL, содержащий эту строку в строке запроса
CiTemplate=/scripts/payrollaccess.pl
что позволит неавторизованному пользователю прочесть содержимое файла сценария Perl. Для исключения этой возможности рекомендуется переключаться между несколькими файлами .htx посредством использования только базового имени файла и добавления каталога сценариев и расширения имени файла взамен параметра, например:
[Query] CiRectriction=%q% CiTemplate=/scripts/%t%.htx
В файле .idq можно указать файлы, которые не должны отображаться в результатах поиска. Например, если виртуальный корневой каталог /reports указывает на D:\reports, но результаты из D:\reports\ private не должны отображаться в конечном наборе данных, измените параметр CiRestriction в файле .idq следующим образом:
CiRestriction=%CiRestriction% AND NOT #path D:\reports\private*Важно. Сервер индексов будет индексировать подкаталог, не имеющий разрешение Read (Чтение), если он находится внутри каталога, имеющего разрешение Read (Чтение). Во избежание этого замаскируйте непредназначенные для чтения каталоги посредством установки CiRestriction в файле запроса .idq. Например, скрыть папку с именем \_readforbidden можно установкой CiRestriction в файле .idq на значение CiRestriction=(%UserRestriction%)&!#vpath *\readforbidden\*.
Политики истечения срока размещения
Сервер NNTP поддерживает тысячи различных групп новостей, а в популярных группах новостей публикуются сотни статей в день. Если не ограничить число публикуемых статей, то на NNTP-сервере возникнет проблема нехватки пространства на жестком диске; если в этом же разделе находится и операционная система, то сервер может попросту выйти из строя. Это еще одна причина, по которой следует размещать файлы NNTP на отдельном жестком диске. Можно уменьшить занимаемое статьями группы новостей дисковое пространство, применив политику истечения срока размещения, которая автоматически удаляет статьи по достижении ими определенного возраста. Для создания данной политики щелкните правой кнопкой мыши на узле Expiration Policies (Политики истечения срока) и выберите New (Создать), после чего выберите Expiration Policy (Политика истечения срока размещения). Откроется Expiration Policy Wizard (Мастер политики истечения срока размещения), с помощью которого можно создать новую политику.
Рис. 10.11. Укажите адрес электронной почты, на который отправляются статьи для проверки, либо параметры домена модератора по умолчанию
Разрешения папок и файлов
Настройка разрешений на вкладке FTP Site (FTP-сайт) или Virtual Directory (Виртуальный каталог) не может игнорировать атрибуты безопасности NTFS рассматриваемого каталога или находящихся в нем файлов. Если разрешения NTFS для каталога установлены только на чтение, то даже при наличии доступа на чтение и запись во вкладке Directory (Каталог) пользователь сможет осуществлять доступ только для чтения.
В настоящий момент пользователям предоставлены самые ограниченные права. Следует просто добавить пользователей, которым нужен доступ к каталогу FTP, и присвоить им минимальные разрешения. Пользователи должны обладать привилегией локального входа, а также разрешением Read (Чтение) или Write (Запись). Не предоставляйте им право Access this Computer from the Network (Осуществлять доступ к этому компьютеру из сети), которое позволяет обходить службы Web, FTP или Gopher.
Важно. Предоставление права Access this Computer from the Network позволяет пользователю обходить службы FTP для подключения к серверу. Это обстоятельство не соответствует одному из важных условий безопасности IIS. При входе клиента на сервер доступ пользователя ограничивается домашним каталогом FTP и его подкаталогами. Это хороший метод управления областями, к которым имеет доступ пользователь.
Сценарии аутентификации
Изучите следующие сценарии аутентификации перед разрешением или запретом анонимного подключения к FTP-сайту.
Все пользователи осуществляют доступ к FTP-сайту из интернета. Следует разрешить только анонимные подключения, что запретит использование реальных имен пользователей и паролей посредством отправки их в открытом виде через интернет.
Все пользователи осуществляют доступ к FTP-сайту через локальную сеть. Необходимо, чтобы каждый пользователь входил в систему под своей учетной записью, и использовать функции безопасности NTFS для управления разрешениями на доступ. Если нет уверенности в том, что сеть является доверенной (что реально для сети небольшого размера), то используйте только анонимные подключения для запрета передачи паролей в открытом виде.
Пользователи доверенной сети по умолчанию входят в собственный подкаталог FTP. Отключите опцию Allow Anonymous Connections (Разрешить анонимные подключения) и создайте учетную запись Windows для каждого из пользователей. Присвойте учетным записям Administrators (Администраторы) и System (Система) право Full Control (Полный доступ) и удалите группу Everyone (Все пользователи). Создайте подпапку для каждого пользователя, наследующую параметры безопасности корневой папки, добавьте пользователя, использующего папку, и присвойте ему право Full Control (Полный доступ).
Пользователи осуществляют доступ к FTP-сайту как из интернета, так и из локальной сети. Из-за ограничений протокола FTP следует разрешать только анонимные подключения, чтобы локальные пользователи не передавали свои пароли в открытом виде.
FTP-сайт позволяет пользователям обмениваться конфиденциальными файлами. Необходимо установить сертификат сервера и предоставить пользователям такую программу, как SecureFX от Van Dyke Software, расположенную по адресу www.vandyke.com/products/securefx/. Программа SecureFX обеспечивает соединение SFTP (Безопасный FTP) посредством шифруемого SSH2-соединения, защищающего весь трафик от сетевого прослушивания. В качестве альтернативы можно использовать сетевые экраны типа Microsoft ISA Server, работающие через протокол IPSec, для шифрования FTP-трафика и аутентификации пользователей посредством входных данных их учетных записей Windows.
Важно. Используйте для FTP-каталогов файловую систему NTFS. Файловая система FAT поддерживает безопасность только на уровне общего расположения.
Сервер индексов Microsoft и служба индексирования содержимого
По мере увеличения размеров веб-сайта он будет содержать все больше данных, доступных пользователям, и вам понадобится поисковая система для облегчения поиска нужной информации. Сервер индексов Microsoft представляет собой службу, дополняющую Internet Information Server, которая обеспечивает возможность поиска текстовых документов (форматов HTML, MS Word, Excel и PowerPoint) на сервере. Операции сервера индексов выполняются службой индексирования содержимого, функционирующей как служба NT, параметры которой изменяются с помощью консоли Services Management Console (Управление службами). Сервер индексов составляет общий перечень содержимого и свойств документов, находящихся в определенном наборе каталогов (называемом областью), которые коллективно группируются в один каталог. Как упоминалось ранее, сервер индексов может индексировать сообщения NNTP на сервере новостей.
Перед использованием сервера индексов выделите дополнительное дисковое пространство и, если требуется, увеличьте размер оперативной памяти, чтобы обеспечить его корректную работу. Он может занимать до 40 процентов размера Corpus (это весь набор индексированных каталогов и документов). Наверное, вы сейчас скажете: "Здорово, теперь на моем сайте есть даже поисковая система!" К сожалению, сервер индексов стал причиной возникновения некоторых угроз безопасности веб-сайтов IIS из-за ошибок в настройке. Например, запрос поиска в виде формы может передавать до 4 килобайт данных, но если объем запроса будет больше, то работа сервера индексов станет нестабильной. Все отправляемые запросы не должны превышать предельно допустимого значения (см. лекцию 11).
Совет. Если свободное дисковое пространство на диске индексов подходит к концу (остается менее 3 Мб свободного места), фильтрация будет временно остановлена, и в журнале событий появится запись о переполнении диска.
Служба FTP – протокол передачи файлов
FTP представляет самый простой способ обмена файлами между удаленными компьютерами и используется для загрузки или отгрузки файлов на другой компьютер. Это стандартный протокол интернета, оптимизированный для передачи данных через сети TCP/IP. Для надежной передачи данных FTP устанавливает соединение клиент/сервер с использованием двух портов TCP на компьютере-клиенте и сервере. Первый порт называется FTР Control и обеспечивает начало сеанса и контроль ошибок; второй порт называется FTP Data и обеспечивает непосредственную передачу данных между клиентом и сервером. Служба FTP использует хорошо известный порт 21 для операций контроля и порт 20 для передачи данных. Клиентские порты TCP присваиваются динамически при создании сеанса.
"Хорошо известные" номера портов зарезервированы организацией ICANN (Internet Corporation for Assigned Names and Numbers) для использования конечными точками приложения, которые устанавливают связь через протоколы TCP или UDP. Каждый тип приложения имеет свой собственный и, следовательно, "хорошо известный" номер порта. Когда приложение на одном клиенте устанавливает соединение с другим клиентом, оно указывает на конкретное приложение посредством номера порта. Известные порты лежат в диапазоне от 0 до 1023, зарегистрированные порты – с 1024 по 49 151, а оставшиеся порты, вплоть до 65 535, используются в качестве динамических или частных портов. Вы можете сменить номер порта, используемый любой службой IIS, включая SMTP и NNTP. Это делается из соображений безопасности в небольшой частной сети; однако большинство хакеров используют сканеры портов для нахождения открытых портов.
Служба FTP позволяет пользователям загружать с сайта файлы, например, руководства по использованию товаров, сотрудникам отдела продаж работать с заказами или отчетами, находясь в отъезде или в пути. Однако за эти возможности можно заплатить немалую цену. Протокол FTP осуществляет передачу всех данных, включая имена пользователей и пароли, через сеть в открытом виде, что открывает доступ к локальной файловой системе любому пользователю в сети, если не обеспечена должная защита (право на локальный вход требуется каждому пользователю, подключающемуся к FTP-серверу).
Совет. При смене значения контрольного порта FTP вы скроете свой сервер от большинства клиентов FTP в интернете. В этом случае сообщите новый номер порта только тем пользователям, которым предоставляется доступ к FTP-службе, например: ftp://www.ваш_сервер.com:1025.
Служба NNTP
IIS обеспечивает поддержку протокола NNTP (Network News Transport Protocol) – интернет-стандарта для чтения и публикации статей в группах новостей. Группы новостей представляют собой что-то вроде почтового ящика, доступного каждому пользователю. Статьи публикуются аналогично сообщениям электронной почты, отправляемым в почтовый ящик адресата. Общие группы новостей являются прекрасным способом предоставления общего доступа и обеспечения обмена информацией. Так как группы новостей можно защитить посредством шифрования SSL и разрешений NTFS, они представляют собой идеальный способ связи с определенными группами пользователей, например, с сотрудниками, поставщиками и клиентами, при наличии собственной группы новостей у каждой из групп пользователей. Для управления службой NNTP используется Internet Services Manager (Диспетчер служб интернета), как показано на рисунке.
увеличить изображение
NNTP следует устанавливать только после настройки безопасности службы IIS. Для SSL-аутентификации клиентов установите сертификат для сервера IIS. При установке NNTP в папке Inetpub создается папка nntpfile, которая содержит вложенные папки и файлы, предназначенные для управления службой NNTP и группами новостей. Как и для FTP, расположите эти корневые папки на другом томе NTFS, чтобы обеспечить контроль доступа и достаточное количество пространства. Активные группы новостей предъявляют высокие требования к дисковому пространству. Для изменения расположения корневых папок откройте объект NNTP в Interent Services Manager (Диспетчер служб интернета) и щелкните на записи Virtual Directories (Виртуальные каталоги). В правой части окна в поле Newsgroup Subtree (Дерево группы новостей) отобразятся каталоги, используемые NNTP (см. рисунок).
увеличить изображение
Дважды щелкните на каталоге Default (Каталог по умолчанию) для открытия окна Properties (Свойства) (см. рис. 10.6), после чего нажмите на кнопку Contents (Содержимое). Выберите том и каталог для использования службой NNTP. Обратитесь к разделу "Виртуальные каталоги" далее в этой лекции, чтобы узнать, как настроить ограничения на доступ к этим каталогам.
Служба SMTP (Simple Mail Transport Protocol)
SMTP (простой протокол передачи сообщений электронной почты) представляет собой основной протокол, используемый для передачи сообщений электронной почты через интернет. IIS обеспечивает его поддержку посредством службы SMTP, которая устанавливается в качестве дополнительного компонента. Однако не думайте, что это полнофункциональная почтовая система, как, например, Microsoft Exchange. Служба SMTP не поддерживает протоколы POP3 или IMAP, которые позволяют пользователям хранить сообщения в нескольких частных расположениях. Так как SMTP лишь отправляет электронную почту с одного сервера на другой, ни SMTP, ни IIS не могут обрабатывать входящую почту и помещать ее в почтовые ящики для чтения пользователями. Так зачем же устанавливать службу SMTP, если она не обеспечивает функциональность почтового ящика? Эта служба облегчает приложениям доступ к сервису электронной почты и может пригодиться, если вам понадобится простой почтовый SMTP-сервер.
Важно. Windows 2000 устанавливает SMTP по умолчанию, когда сервер переходит в статус Domain Controller (Контроллер домена), так как SMTP является дополнительным транспортным методом, используемым для передачи информации между контроллерами доменов. Если контроллер домена не настроен непосредственно на использование SMTP, отключите службу SMTP, если она не используется еще где-нибудь.
Если сайт требует наличия SMTP, необходимо выполнить настройку параметров безопасности. Работа SMTP на сервере IIS делает его уязвимым к атакам на отказ в обслуживании, атакам с произвольным кодом, массовым рассылкам, программам прослушивания сети, перехватывающим сообщения при их маршрутизации с одного сервера SMTP на другой. Как и для FTP-сервера, настройте SMTP-сервер для обеспечения минимального количества необходимых служб.
Службы Simple TCP/IP
Simple TCP/IP Services (Простые службы TCP/IP) являются компонентом сетевых служб; они обеспечивают работу служб Character Generator (Генератор символов), Daytime (Время суток), Discard (Сброс), Echo (Эхо) и Quote of the Day (Квота дня). Этот компонент не нужен для IIS, однако многие администраторы устанавливают его, ошибочно полагая, что его используют службы, работающие с протоколами TCP/IP. Мы настоятельно рекомендуем не устанавливать этот компонент, так как уже выполнялись атаки на отказ в обслуживании, направленные на эти службы в Windows 2000. Допустим, что имеются программы, выполняющие по отношению к системам с работающей службой Echo обманные действия, например, реализацию постоянного отражения сообщений в прямом и обратном направлениях. Для проверки состояния службы Simple TCP/IP Services дважды щелкните на каждом подключении локальной сети, имеющемся в окне Network and Dial-up Connections (Сеть и удаленный доступ), и нажмите на кнопку Properties (Свойства) (см. рис. 10.14). Если в списке Components (Компоненты) содержится (или включен) компонент Simple TCP/IP Services, выберите его и нажмите на кнопку Uninstall (Удалить).
Рис. 10.14. Подключение сервера настроено правильно, так как включены в работу только необходимые службы
Службы IIS играют значительную роль в успехе сайта, однако следует включать в работу только самые необходимые службы. Каждая служба представляет собой потенциальную точку доступа для хакеров, поэтому компоненты нужно тщательно настроить, постоянно контролировать их работу, обновлять посредством установки специализированных надстроек безопасности.
Службы Windows Media
Службы Windows Media, по существу, не являются службами IIS, однако потоковая передача данных становится популярной веб-службой, поэтому скажем несколько слов о параметрах безопасности медиа-файлов. Если сайт содержит лишь несколько звуковых файлов, то можно использовать потоковое воспроизведение; однако если вниманию пользователей предлагаются веб-демонстрации или конференции, лучше всего использовать для их доставки сервер Windows Media. Компоненты Windows Media обеспечивают множество недоступных по отдельности дополнительных возможностей посредством потоковой передачи данных с IIS. Сервер Windows Media не только эффективнее веб-сервера использует системные ресурсы (процессорное время и полосу пропускания сети), но также обеспечивает две важные функции безопасности – Windows Media Security (Безопасность Windows Media) и Logging (Ведение журнала).
Сообщения
FTP-службы IIS позволяют отображать приветственное сообщение, настраиваемое на вкладке Messages (Сообщения), показанной на рисунке ниже. Используйте это сообщение для предупреждения об условиях и правилах, с которыми пользователи должны согласиться, прежде чем приступить к работе с сайтом. Например, текст сообщения может быть таким: "Это частная компьютерная система, предназначенная только для авторизованного использования. Несанкционированное использование ресурса влечет за собой уголовную ответственность. Доказательства незаконного использования, фиксируемые посредством мониторинга, могут быть использованы в судебных процессах по факту административного, уголовного нарушения или иного преступления. Использование данной системы подразумевает ваше согласие с условиями мониторинга в указанных целях". В сообщении укажите текст, подходящий для конкретного сайта (посоветуйтесь с квалифицированным специалистом).
Учетные записи безопасности
Для получения доступа к FTP-серверу пользователи должны осуществлять вход в систему. На вкладке Security Accounts имеются средства управления, позволяющие определить, кто имеет доступ к FTP-серверу, и кто является его администратором. Для предоставления общего доступа из интернета к файлам FTP-сервера выберите опцию Allow Anonymous Connection (Разрешить анонимное подключение) и укажите учетную запись, которая будет использоваться для анонимного доступа. На рисунке 10.3 показано, что учетной записью по умолчанию является IUSR_имя-компьютера. Эта же учетная запись используется для анонимного доступа из интернета к IIS-серверу.
(Если служба FTP настроена на разрешение анонимного доступа, клиенты смогут входить в систему под именем "anonymous". Как правило, анонимные пользователи FTP вводят в качестве пароля свой адрес электронной почты. Internet Explorer осуществляет автоматический анонимный вход на любой FTP-сервер, разрешающий анонимное подключение.)
Если используется одна и та же учетная запись для обеих служб, то любая "брешь" в службе FTP подвергает опасности и сервер IIS. Если только серверам FTP и IIS не требуется доступ к одним и тем же папкам (что не рекомендуется), создайте новую учетную запись для анонимных пользователей FTP. Используя раздельные учетные записи, разрешения NTFS смогут контролировать права доступа, и возникающие проблемы будут относиться только к FTP-папкам. Выбор опции Allow Only Anonymous Connections (Разрешить только анонимные подключения) позволит пользователям выполнять только анонимный вход. Это запретит использование имен и паролей через небезопасное FTP-подключение и предотвратит попытки хакеров получить доступ через учетную запись администратора. При выключении опции Allow Anonymous Connections при каждом запросе пользователя будет появляться диалоговое окно аутентификации для ввода имени и пароля.
Рис. 10.3. Включите анонимные подключения, чтобы разрешить общий доступ к FTP-сайту из интернета, но используйте для этого другую учетную запись
Важно. Опция Allow Only Anonymous Connections не предотвратит попытки неосведомленных сотрудников использовать свои имена пользователей и пароли для входа на FTP-сервер. Убедитесь, что сотрудники компании знают о правилах входа на FTP-сервер и не будут подвергать свои пароли опасности перехвата.
Наделите отдельных пользователей или группы пользователей привилегиями операторов на общем уровне и уровне отдельных сайтов, добавив их в список операторов FTP-сайта. Операторы FTP-сайта представляют собой специальную группу, имеющую ограниченные полномочия администрирования на отдельных FTP-сайтах. Операторы администрируют параметры, влияющие только на подконтрольные им сайты. У них нет доступа к параметрам IIS, настройкам компьютера или к настройкам сети. Например, можно присвоить одному сотруднику из каждого отдела компании права оператора FTP-сайта соответствующего отдела организации. Оператор устанавливает разрешения на доступ к FTP-сайту, ведет журнал и настраивает сообщения, однако не может изменять настройки идентификации FTP-сайтов и анонимные имя пользователя и пароль, создавать виртуальные каталоги или изменять их пути. Учетные записи операторов не обязательно входят в группу администраторов Windows. Операторы сайтов могут относиться и к другим службам IIS, таким как WWW, NNTP и SMTP.
Важно. Если анонимные подключения не используются, следует усилить пароли посредством изменения политики безопасности Windows.
Управление группами новостей
NNTP-сайт по умолчанию содержит четыре объекта в панели Scope (Область).
Newsgroups (Группы новостей). Перечень групп новостей, имеющихся на сервере NNTP.Expiration Policies (Политики истечения срока размещения). Перечень политик, управляющих автоматическим удалением статей группы новостей.Virtual Directories (Виртуальные каталоги). Перечень виртуальных каталогов, используемых службой NNTP для хранения статей группы новостей.Current Sessions (Текущие сеансы). Перечень удаленных клиентов NNTP и серверов, задействованных в отгрузке и загрузке статей.
После создания группы новостей дважды щелкните на ней для настройки параметров. Включение опции Read Only (Только чтение) запрещает всем пользователям, за исключением администратора NNTP или модератора (редактора, обязанностью которого является проверка статей), публиковать статьи в группе новостей. Если необходим жесткий контроль над статьями, публикуемыми в группе новостей (например, при публикации пресс-релизов компании), включите опцию Read Only (Только чтение) или Moderated (Модерируемая). В модерируемой группе новостей пользователи не смогут напрямую публиковать статьи. Статьи отправляются на адрес электронной почты модератора для проверки, и только после этого располагаются в группе новостей (см. рис. 10.11).
Установка компонентов IIS
Компоненты IIS устанавливаются при инсталляции IIS, или позднее, с помощью мастера установки и удаления программ, имеющегося в панели управления Windows. Отметьте компонент Internet Information Services, нажмите на кнопку Details (Детали) и выберите любые дополнительные службы IIS, которые необходимо установить (см. рисунок ниже).
Совет. При установке сервера IIS инсталлируйте только те компоненты, которые обеспечивают работу нужных служб.
Каждая устанавливаемая служба представляет собой потенциальную точку входа на сервер, так как она обрабатывает запросы клиентов. Чем больше служб работает на сервере, тем больше точек входа доступно для реализации атак. Назначение веб-сайта и соответствующая ему политика безопасности определяют, какие дополнительные службы должны быть установлены и включены. Не следует устанавливать или включать ненужные службы. Сетевая политика доступа к службам определяет, какие службы IIS и при каких обстоятельствах разрешены и запрещены. В лекции 3 рассказывалось о минимальном наборе служб, необходимом для работы IIS. Единственными необходимыми службами IIS являются службы World Wide Web (WWW) Publishing Service и IIS Admin Service.
увеличить изображение
Все разделы, используемые IIS-службами, должны иметь файловую систему NTFS для контроля доступа и использования защиты NTFS. Располагайте содержимое каждой поддерживаемой службы (WWW или FTP) в отдельном разделе либо, что предпочтительнее, на отдельном томе. Убедитесь, что сервер имеет ресурсы, необходимые для поддержки дополнительных служб с использованием настроек безопасности, так как их работа отрицательно скажется на общей производительности системы. Далее вы увидите, что некоторые конфигурации безопасности используют значительную долю ресурсов. Давайте начнем со службы протокола FTP (протокол передачи файлов).
Ведение журнала FTP-активности
В соответствии с политикой аудита безопасности необходимо осуществлять запись FTP-активности, поэтому отметьте опцию Enable Logging (Вести журнал). Для включения записи активности пользователей отметьте опцию Log Visits (Записывать в журнал посещения) на вкладке Home Directory (Домашний каталог) для каждого сайта FTP. Система обнаружения вторжений поддерживает мониторинг журналов, однако следует выяснить формат этих журналов. Параметры и настройки журнала должны быть такими же, как и для службы WWW.
Виртуальные каталоги
Виртуальный каталог NNTP является альтернативным физическим расположением групп новостей по умолчанию C:\Inetpub\nntpfile\root\имя_группы_новостей. Вы можете использовать общие папки; однако этого нельзя делать при условиях, о которых шла речь при рассмотрении FTP-сервера ранее в этой лекции. Преимущество использования виртуальных каталогов заключается в том, что статьи групп новостей располагаются на нескольких устройствах, что облегчает присвоение разрешений и повышает производительность ввода/вывода. Виртуальный каталог может содержать статьи отдельной группы новостей, а также статьи всей категории группы новостей. Например, с помощью узла Virtual Directories (Виртуальные каталоги) можно создать виртуальный каталог для хранения всех групп новостей, относящихся к внутренним уведомлениям, на одном дисковом накопителе и еще один виртуальный каталог для общих групп новостей – на другом.
Безопасные подключения. На рисунке 10.3 показано окно Properties (Свойства) виртуального каталога, содержащее параметры доступа пользователей, параметры соединения и контроля за содержимым. Для защиты групп новостей от сетевого прослушивания включите использование безопасных соединений, чтобы клиенты в обязательном порядке подключались к службе NNTP через SSL для шифрования исходящих данных. Для выполнения этого действия понадобится сертификат веб-сервера.
Ограничения доступа. При помощи параметра Allow Posting (Разрешить публикацию) можно разрешить или запретить публикацию в группе новостей новых статей, а опция Restrict newsgroup visibility (Ограничить видимость группы новостей) обеспечивает отображение группы новостей только тем пользователям, которые имеют разрешение на доступ к ней. Мы рекомендуем использование этой опции всеми частными группами новостей.
Индексирование новостей. Пользователям групп новостей можно предложить возможность поиска определенного текста в статьях новостей. NNTP использует Microsoft Indexing Services (Службы индексирования Microsoft) для регулярного сканирования статей группы новостей и создания базы данных, в которой осуществляется поиск информации. Однако служба индексирования может отобразить неверную статью с важной информацией, если не настроить должным образом ее работу. Перед включением этой возможности изучите раздел "Сервер индексов Microsoft и служба индексирования содержимого".
NNTP представляет собой одну из наиболее успешных технологий, применяемых в интернете, которая позволяет легко и быстро производить обмен информацией и не представляет угроз безопасности в отличие от службы FTP. Тем не менее, необходимо в обязательном порядке настроить разрешения NTFS, ограничить и обеспечить безопасность любых имеющихся групп новостей, доступ к которым разрешен только определенному кругу пользователей.
Вкладка Settings (Параметры)
На вкладке Settings (Параметры) можно настраивать максимальный объем новостных статей и рассылок, а также разрешать или запрещать другим серверам использование новостей, расположенных на NNTP-сервере. На рисунке 10.10 показана вкладка Settings с настройками предельного объема статей. Различие между опциями Limit post size (Ограничить размер статьи) и Limit connection size (Ограничить размер подключения) заключается в следующем. Предельным размером статьи является максимальный размер отдельной опубликованной статьи, а предельным размером подключения является полный объем всех статей, которые может опубликовать пользователь в течение одного подключения. Установите пределы, соответствующие типу групп новостей. Если у вас имеются управляемые группы новостей без определенного модератора, укажите домен модератора по умолчанию, чтобы статьи отправлялись на адрес имя_группы_новостей@домен_модератора_по_умолчанию.
Рис. 10.10. Во вкладке Settings (Параметры) определяется способ публикации статьи на NNTP-сервере
Опция Allow News Servers to Pull Articles from This News Server (Разрешить другим сайтам использовать статьи с этого сервера). Удаленные NNTP-серверы могут загружать локальные группы новостей и их статьи, после чего открывать к ним общий доступ.
Данная опция включена, если группы новостей предназначены для общего пользования, и отключена при необходимости контроля статей в группе новостей.
Опция Allow Control Messages (Разрешить контрольные сообщения). Клиенты для чтения новостей и другие серверы NNTP могут отправлять команды для создания и удаления групп новостей на NNTP-сервере либо для отмены ранее опубликованных статей. Отключите эту опцию, чтобы контрольные сообщения, получаемые сервером, только протоколировались, но не обрабатывались. Это позволит контролировать происходящее на сервере NNTP.
Windows Media и сетевые экраны
Windows Media, как правило, осуществляет потоковую передачу данных через UDP/IP по целому диапазону портов. Для предотвращения проблем, связанных с открытием столь большого числа портов, можно реализовать потоковую передачу через TCP/IP по одному порту (1755). Если политика безопасности не позволяет открывать порт, не являющийся широко используемым, Windows Media может осуществлять потоковую передачу через HTTP по порту 80.
Следующая конфигурация сетевого экрана позволит пользователям интернета осуществлять доступ к серверу Windows Media, находящемуся под его защитой.
Потоковая передача файлов Windows Media Technologies (ASF) через UDP: Вход: TCP через порт 1755 Вход: UDP через порт 1755 Выход: UDP в диапазоне портов 1024 – 5000 (присвоение портов осуществляется случайным образом в диапазоне 1024 – 5000, но открывается только необходимое количество портов).
Потоковая передача файлов Windows Media Technologies (ASF) через TCP: Вход/выход: TCP через порт 1755 Потоковая передача ASF через HTTP Вход/выход: TCP через порт 80
Порт "Выход" является портом, используемым Microsoft Windows Media Player или другими клиентами для связи с сервером.
Запуск и остановка служб
Вы можете запускать, останавливать, приостанавливать и возобновлять работу служб FTP, SMTP и NNTP с помощью Internet Services Manager (Диспетчер служб интернета), консоли Services Management (Управление службами), а также из командной строки при помощи сетевых команд, приведенных в табл. 10.1.
Start | net start | Запускает службу и разрешает новые подключения. |
Stop | net stop | Выполняет немедленное закрытие службой всех подключений. |
Pause | net pause | FTP-служба запрещает создание новых подключений, но не отключает текущих пользователей. Служба SMTP запрещает установку новых подключений, но продолжает доставку и прием сообщений через имеющиеся соединения. Служба NNTP запрещает новые подключения, но продолжает передачу новостей через имеющиеся соединения. |
Resume | net continue | Возобновляет работу после паузы и разрешает новые подключения. |
Имейте в виду, что между командами Stop и Pause существует различие. Несмотря на то, что обе команды запрещают установку новых подключений, команда Pause не закрывает имеющиеся соединения; это делает команда Stop. Именами программ служб FTP, NNTP и SMTP являются msftpsvc, nntpsvc и smtpsvc соответственно. Таким образом, для остановки службы FTP наберите и выполните в командной строке следующую команду:
net stop msftpsvc
Защита файлов сервера индексов при помощи параметров безопасности файлов NTFS
Сервер индексов полностью интегрирован с безопасностью IIS и Windows 2000 Server, поэтому можно контролировать доступ к индексированным документам, позволяя пользователям просматривать только разрешенные документы. Следовательно, для обеспечения общей безопасности системы очень важно расположить сервер индексов в разделе с файловой системой NTFS, как и все папки, предназначенные для индексирования. Ключевыми файлами сервера индексов, требующими контроля, являются следующие файлы.
Файлы Internet Data Query (.idq). Определяют область поиска и ограничения на поиск, установленные на сервере индексов.Сценарии Index Data Administration (.ida). Файлы, аналогичные предыдущему типу; в них хранятся запросы администрирования.Шаблон расширения HTML (.htx). Шаблон, устанавливающий формат отображения пользователю результатов посредством преобразования данных запроса в файл HTML.Файлы форм запроса (.htm). Форма отправки запроса на поиск.Папки каталогов (.wci). Состоят из индексов содержимого и свойств, а также из других файлов, содержащих индексированные данные.
AccessControl
Установите значение AccessControl, равное 1; в противном случае каждый раз при создании подсайта любой пользователь получит права автора по отношению к этому подсайту, пока параметры доступа не будут настроены вручную.
1 | Да | Да | Нет |
ActivePerl
Технология ActivePerl разработана фирмой ActiveState и доступна бесплатно на сайте http://www.activeperl.com/. Perl является популярным языком программирования, в особенности среди разработчиков для платформы UNIX. Windows-версия ActivePerl обеспечивает дополнительные возможности платформы IIS – PerlScript и Perl для ISAPI. Рекомендуется использовать ActivePerl при перемещении веб-сайта с сервера UNIX или по желанию разработчиков.
ASP взаимодействует с IIS через ISAPI и ASP DLL, а Perl использует интерпретатор – комбинированный исполняемый файл Perl.exe. Perl.exe работает как независимое приложение, используя дополнительные ресурсы сервера при каждом его вызове веб-сервером для обработки запроса, что снижает эффективность. При возникновении ошибки внутри сценария веб-сервер будет ожидать истечения срока запроса, так как он не может контролировать Perl. А сценарий CGI тем временем продолжит использование системных ресурсов и в конечном итоге вызовет сбой в работе сервера (сам Perl не влияет на работу веб-сервера).
В отличие от большинства версий Perl PerlScript позволяет внедрять теги сценариев непосредственно в веб-страницу, аналогично VBScript в страницах ASP. При установке ActivePerl выберите инсталляцию Perl для ISAPI, чтобы ActivePerl выполнялось как приложение ISAPI, аналогично ASP.
Совет. Ознакомьтесь с бесплатными безопасными сценариями Perl, которые обеспечивают нужную функциональность и предотвращают возникновение пробелов в безопасности, на веб-сайте http://superscripts.com/resources.
Активные страницы сервера (ASP)
Страницей ASP является HTML-страница, содержащая один или более сценариев, обрабатываемых IIS перед передачей пользователю. ASP взаимодействует с IIS через ISAPI и asp.dll (динамически подсоединяемая библиотека ASP), которые являются сопровождающими приложениями в том же пространстве памяти, что и IIS. Это обеспечивает малое время реагирования, так как asp.dll имеет прямой доступ к значениям памяти IIS. Asp.dll выполняется с привилегиями учетной записи IWAM_имя-компьютера. IIS настроен на использование ASP по умолчанию, поэтому для создания динамического содержимого не нужно устанавливать дополнительное программное обеспечение.
Совет. ASP также является сокращением от Application Service Providers (Поставщики услуг приложений). Они обеспечивают управление компьютерными услугами из удаленных центров через интернет или частную сеть.
ASP вызывает компоненты Component Object Model (COM) для обеспечения лучшей функциональности с помощью обработки ресурсов серверной части, однако эта возможность представляет угрозу безопасности. Следует отключить или удалить все ненужные для работы сайта компоненты COM, например, File System Object (Объект файловой системы), предоставляющий веб-приложениям доступ к жестким дискам. Для отключения File System Object выполните следующую команду:
regsvr32 scrrun.dll /u
Для получения более подробной информации о приложениях COM используйте апплет Component Services (Службы компонентов) из папки Administrative Tools (Администрирование).
Совет. Технология COM в интернете известна как ActiveX – программная архитектура, позволяющая создавать приложения из программных компонентов многоразового использования. Метод создания и использования компонентов формирует базу для высокоуровневых программных служб, таких как OLE (сокр. от object linking and embedding – связывание и внедрение объектов), обеспечивающих межпрограммное использование сценариев и передачу данных.
AllowExecutableScripts
Установите значение AllowExecutableScripts на нуль, если не нужно помечать отдельные файлы как исполняемые.
0 | Да | Да | Нет |
Безопасность приложения
IIS предоставляет три возможных процесса для выполнения приложения.
Процесс, используемый веб-службами (Inetinfo.exe).Объединенный процесс, являющийся отдельным вхождением DLLHost.exe.Процесс, отдельный от веб-служб (DLLHost.exe).
Они обеспечивают различные уровни защиты. При возникновении ошибки в приложении процесс, в котором оно выполняется, перестает отвечать на запросы. По умолчанию inetinfo.exe выполняется в своем собственном процессе, а другие приложения – в одном и том же объединенном процессе. Необходимо найти оптимальное соотношение между производительностью и уровнем защиты приложения. Приложения, выполняющиеся в веб-службах, обрабатывают результат с большей производительностью, но и с большей вероятностью того, что неправильно функционирующее приложение сделает недоступными веб-службы. Следовательно, inetinfo.exe выполняется в собственном процессе, жизненно важные приложения – в своих процессах (высокий уровень безопасности), остальные приложения – в объединенном процессе (средний уровень безопасности).
Библиотеки DLL пакета FPSE
FrontPage использует все возможности FPSE. Когда автор или администратор выполняет операцию при помощи FrontPage, он подключается к серверным расширениям, используя протокол удаленного вызова процедур RPC, лежащего в основе HTTP и HTML. Запрос POST отправляется из клиента FrontPage одной из трех библиотек DLL FPSE.
Запросы на действия по администрированию передаются библиотеке Admin.dll.Запросы на действия по авторству передаются библиотеке Author.dll.Запросы на действия по просмотру передаются библиотеке Shtml.dll.
Когда веб-браузер или FrontPage-расширенный веб-сайт запрашивает страницу, требующую FPSE, например, форму отправки данных поиска, он отправляет запрос POST программе просмотра Shtml.dll. После получения службой IIS запроса для FPSE она осуществляет вход в систему и имитирует пользователя, после чего запрос передается напрямую библиотеке Admin.dll, Author.dll или Shtml.dll. Далее библиотека DLL FPSE сверяет разрешения имитируемого администратора, автора или посетителя со списком ACL в корневой папке веб-сайта или страницы. При положительном результате проверки запрос обрабатывается; в противном случае клиенту FrontPage или браузеру передается сообщение "Доступ запрещен".
ClientVerCutoff
Устанавливает самую раннюю версию клиента FrontPage, подключаемую к серверу.
Любая версия | Нет | Нет | Да |
Директивы вставок серверной части (SSI)
Серверная часть представляет собой ограниченный тип приложения CGI. На самом деле ASP распознает элементы SSI просто в виде инструкции при обработке файла. На странице ASP можно использовать инструкцию #include для замещения этой инструкции содержимым другого файла. Следующая строка кода обеспечивает включение файла postalrates.inc в нужное место:
<!-- #include file="/includes/postalrates.inc" -->
Для обработки директивы SSI #include используется библиотека ssinc.dll, а затем asp.dll интерпретирует всю страницу. Это очень удобно при повторном использовании нескольких строк кода на различных страницах. Microsoft рекомендует применять вставку файлов для облегчения работы с ним, так как в этом случае для изменения кода на нескольких страницах требуется изменение только одной. Однако при открытии файла вставки непосредственно в браузере злоумышленник получит доступ к исходному коду, так как файлы вставок не обрабатываются ASP. Для предотвращения этого следует либо связать файлы вставок с расширением .inc с ASP, либо переименовать их, указав расширения .asp, чтобы обеспечить выполнение всего кода сценариев и возврат в веб-браузер только результатов обработки. (Обратитесь к разделу "Совместимость с приложением" в этой лекции.)
IIS поддерживает пять директив SSI:
#config #echo #fsize #flastmod #exec
Нельзя применять эти директивы на странице ASP. Вместо этого используйте одно из специальных расширений HTML, по умолчанию настроенных на употребление директив SSI в IIS: .stm, .shtm и .shtml. На защищаемом сервере директива #exec должна быть отключена, так как она позволяет выполнять программы командной строки или CGI в контексте веб-сервера в отдельном пространстве памяти. IIS по умолчанию отключает эту директиву, но следует убедиться, что следующий параметр реестра установлен на нуль (или отсутствует): HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\ Parameters\SSIEnableCmdDirective.
Дополнительные методы обеспечения безопасности веб-содержимого
Некоторые из динамических элементов веб-содержимого могут быть секретными или разрешенными для доступа только тем пользователям, которые зарегистрировались для использования предоставляемой услуги. Можно контролировать доступ к таким страницам посредством создания списков контроля доступа (ACL) и учетных записей Windows. Но такой подход не применишь на сайте, связанном с электронной коммерцией, так как у него будут тысячи пользователей. Посредством использования сценариев легко осуществляется контроль доступа к страницам без создания учетных записей пользователей Windows.
Файловая система с шифрованием
Файловая система с шифрованием (EFS) обеспечивает внутреннее шифрование файлов, используемое файловой системой Windows 2000 и позволяющее шифровать файлы и папки в томах NTFS. EFS включается для документов в Windows 2000 посредством дополнительного файлового атрибута. Для шифрования содержимого папки перейдите к папке в Windows Explorer (Проводник Windows), щелкните правой кнопкой мыши на папке и выберите команду Properties (Свойства), чтобы открыть соответствующее окно (см. рис. 11.9).
Рис. 11.9. Обеспечьте шифрование содержимого папки, включив соответствующую опцию в окне Proрerties (Свойства)
Нажмите на кнопку Advanced (Дополнительно) и отметьте опцию Encrypt Contents To Secure Data (Шифровать содержимое для защиты данных) (см. рис. 11.10). Нажмите на OK, чтобы вернуться в Windows Explorer.
После обеспечения шифрования папки можно работать с ней и находящимися в ней файлами, как с любыми другими файлами и папками, поскольку процесс шифрования прозрачен для пользователя. Тем не менее, любой злоумышленник, который попытается открыть, скопировать, переместить или переименовать зашифрованные файлы, получит сообщение об отказе в доступе.
Рис. 11.10. Диалоговое окно Advanced Atributes (Дополнительные атрибуты) позволяет включить шифрование файла или папки
Предупреждение. EFS не сможет шифровать файлы с атрибутом System (Системный). Не пытайтесь преодолеть эту меру защиты для шифрования файлов в системной папке. Секретные ключи, необходимые для расшифровки, недоступны при загрузке системы, поэтому если системные файлы будут зашифрованы, система окажется в нерабочем состоянии.
Итак, каким же образом используется EFS для защиты секретного содержимого на веб-сайте? Наиболее часто EFS применяется в корпоративных сетях, в которых каждый пользователь имеет свою собственную веб-папку для публикации документов. Создав зашифрованную подпапку, каждый пользователь имеет доступ к частным документам через интрасеть, но остальным пользователям эти документы недоступны, даже если на сайте включена анонимная аутентификация. Причина в том, что шифруемые EFS файлы являются частными файлами, и к ним имеет доступ только пользователь, зашифровавший их. В качестве метода аутентификации используется встроенная аутентификация Windows или смешанная аутентификация в зависимости от настроек веб-сайта.
Важно. При использовании EFS следует шифровать папки, а не отдельные файлы, так как приложения создают временные файлы в тех же папках, где находятся исходные, особенно в процессе редактирования. При использовании шифрования на уровне папки временные файлы не будут сохраняться в виде открытого текста. По этой же причине следует применить шифрование к папке Temp, расположенной по адресу %SystemRoot%\TEMP.
Фильтрация вводимых данных
Вводимыми данными называются данные, передаваемые сценариям для обработки; они обычно поступают из веб-формы, из базы данных или из другого источника. Фильтрация ввода работает посредством удаления специальных символов из вводимой информации, которые позволяют генерировать сценарий в потоке данных HTML. Ниже приведены специальные символы:
< > " ' % ; ) ( & + -
Конкретная ситуация может потребовать фильтрацию дополнительных символов, помимо указанных.
Фильтры ISAPI
Фильтры ISAPI отличаются от приложений тем, что они управляются событиями веб-сервера, а не запросами клиентов. Фильтр ISAPI закрепляется в системе и отслеживает определенные события при попытках клиентов открыть страницу на сервере. Приложение фильтра располагается между подключением к клиенту и серверу HTTP, что позволяет контролировать обмен данными между IIS и клиентом, а также расширять функциональные возможности сервера посредством реализации дополнительных журналов HTTP и шифрования. Работа фильтров ISAPI основывается на уведомлениях об этапах, которые проходит каждый запрос, передаваемый сервером IIS фильтру ISAPI. Каждое уведомление поддерживает собственный тип данных, соответствующий определенному этапу процедуры запроса. При приеме уведомления от IIS фильтр ISAPI управляет данными уведомления и способом дальнейшей обработки запроса IIS. Программа URLScan, о которой пойдет речь ниже, является примером использования фильтров ISAPI для повышения уровня безопасности IIS.
Важно. Если вы заключаете контракт со сторонними разработчиками для построения интранет-сайта или веб-сайта, или если на сервере используются готовые библиотеки ISAPI DLL, обратитесь к заметке "Проверки сторонних программ" в лекции 9.
Кодировка HTML
IIS передает документ HTML веб-браузеру в виде потока байтов, а браузер воспринимает их как последовательность символов. Для правильного отображения этого потока все HTML-страницы и страницы с активным содержимым должны содержать дополнительную информацию о кодировке символов. Если в страницах не будет указана используемая кодировка, веб-браузер отформатирует их некорректно, и на странице может выполниться вредоносный код. Так как наборы символов имеют несколько представлений, применяемых в виде тегов HTML (например, "<" или ">"), фильтр может исключать не все вхождения символов, в результате чего вредоносный код останется незамеченным.
При фильтрации вводимых пользователем данных следует указать набор символов, используемый на веб-страницах, для обеспечения фильтрации специальных символов. Необходимо установить кодировку для каждой страницы и разрешить передачу заведомо безопасных символов, а не исключать небезопасные символы. Так как постоянно разрабатываются новые браузеры и языки сценариев, нельзя быть на сто процентов уверенным в том, что учтены все возможные комбинации символов, представляющие опасность для системы.
Чтобы установить кодировку символов на веб-странице, необходимо включить в код страницы тег МЕТА, который должен стоять как можно выше в коде страницы, по возможности сразу после тега <HEAD>. В этом примере веб-браузер будет использовать для отображения страницы кодировку ISO-8859-1:
<html> <head> <META http-equiv="Content-Type" content="text/html; CHARSET=ISO-8859-1"> <title>Safer HTML</title> </head>
Широко используемыми в интернете кодировками являются: ISO-8859-1, называемая Latin-1 (данная кодировка подходит для большинства языков с латинским алфавитом), ISO-8859-5, поддерживающая кириллицу, SHIFT_JIS или EUC_JP (представляют японский язык). Многие HTML-редакторы автоматически добавляют данный тег, полагая, что это очередное ненужное добавление, сделанное редактором. При изменении этого тега следует принимать во внимание территориальное расположение страниц.
Кодировка выходных данных для специальных символов
Все входные данные нужно кодировать при записи в виде HTML. Этот подход частично эффективен для тех данных, которые нельзя быстро проверить при вводе. Представьте себе, что в базе данных отсутствует контроль над процессом ввода информации. Недовольный зарплатой сотрудник организации может ввести вредоносный код в поле базы данных, который отобразится при вызове из сценария. Большая часть языков сценариев содержит функцию кодировки, например, методы объекта сервера ASP HTMLEncode и URLEncode. Разработчики должны помнить об этой форме кодировки серверной части и применять ее в тех местах, где это требуется. Такой подход аналогичен фильтрации за исключением того, что здесь кодируются данные, записываемые для отправки клиенту. Более подробная информация об обработке вводимых данных расположена на сайте CERT по адресу www.cert.org/tech_tips/malicious_code_mitigation.html.
Кодировщик сценариев
Одним из недостатков использования сценариев является то, что любые алгоритмы и код собственной разработки видны любому пользователю, которому разрешено редактировать файл, так как они хранятся в виде обычного текста. Этот недостаток в защите интеллектуальной собственности очень имеет большое значение, если вы предоставляете услуги веб-разработки другим пользователям или используете стороннюю помощь в поддержке сайта, так как у посторонних пользователей появляется возможность копирования кода. Кодировщик сценариев представляет собой простую утилиту командной строки, которую можно бесплатно загрузить с сайта http://msdn.microsoft.com/scripting/. Эта утилита позволяет кодировать сценарии серверной части, чтобы их исходный код был недоступен для просмотра или изменения.
После того как сценарий закодирован, изменение любой части результирующего файла сделает его недействительным, что обеспечит его целостность. Клиенты, для которых разработан код, не смогут его изменять, что значительно упрощает решение проблем, связанных с ошибками, так как в данном случае вы будете уверены в том, что код не был изменен. Данная мера не предотвратит доступ хакера к коду, однако определенно нарушит планы большинства не слишком осведомленных пользователей. Сразу после отладки и тестирования сценария примените данную утилиту для кодирования окончательного сценария. Она кодирует только исходный код сценария, а остальное содержимое файла, представленное открытым текстом, не кодируется. Кодировщик сценариев использует маркеры в коде сценариев для определения того, с какого места необходимо начать кодирование.
Следующий пример кода на языке VBScript демонстрирует использование маркера для кодирования всего кода, кроме сообщения об авторских правах:
<SCRIPT LANGUAGE="VBScript"> 'Copyright© 2002. Ваша компания. Все права защищены. '**Start encode** Код вашей собственной разработки расположен здесь </SCRIPT>
При выполнении кодировщика сценариев весь текст сценария до стартового маркера не кодируется, а данные, находящиеся после маркера, будут закодированы. По завершении процесса кодирования указатель языка в теге <SCRIPT> сменится на
<SCRIPT LANGUAGE="VBScript.Encode" >
META-теги роботов
Если несколько веб-разработчиков или подразделений одновременно управляют различными разделами сайта, то обновление файла robots.txt может оказаться трудной задачей. Используйте специальные META-теги HTML роботов для обозначения того, что страница может индексироваться или анализироваться роботами, хотя не все роботы поддерживают META-теги. Microsoft Index Server поддерживает META-теги роботов и исключает содержащие их веб-страницы. Мета-теги роботов чувствительны к регистру букв и размещаются в разделе <HEAD> страница HTML, как и все остальные META-теги. Например:
<HTML> <HEAD> <META NAME="robots" CONTENT="noindex,nofollow"> <META NAME="description" CONTENT="Данный документ рассказывает о …."> <TITLE>Внутренняя безопасность</TITLE> </HEAD> <BODY>
В содержимом META-тега роботов присутствуют директивы, разделяемые запятыми. В настоящий момент определены директивы INDEX, NOINDEX, FOLLOW и NOFOLLOW. Директива INDEX указывает, должен ли робот индексировать страницу. Директива FOLLOW указывает, должен ли робот переходить по ссылкам на странице для поиска других страниц. Директивами по умолчанию являются INDEX и FOLLOW. Значения ALL и NONE включают и выключают директивы: ALL=INDEX,FOLLOW и NONE=NOINDEX,NOFOLLOW. Чтобы разрешить роботу индексирование и анализ страницы на предмет ссылок, добавьте следующий META-тег:
<META NAME="robots" CONTENT="index,follow">
или
<META NAME="robots" CONTENT="all=index.follow">
Остальные комбинации приведены ниже:
<META NAME="robots" CONTENT="noindex,follow"> <META NAME="robots" CONTENT="index,nofollow"> <META NAME="robots" CONTENT="noindex,nofollow">
Очевидно, что не следует указывать конфликтующие или повторяющиеся директивы, например:
<META NAME="robots" CONTENT="index,noindex,nofollow,follow">Совет. Для получения более подробной информации о роботах посетите сайт http://www.robotstxt.org/.
Настройка фильтров ISAPI
Окно Properties (Свойства) фильтров ISAPI позволяет выбирать фильтры для работы на IIS (см. рис. 11.8). Фильтры ISAPI работают для всех веб-сайтов, так как они устанавливаются на главном уровне; они выполняются именно в том порядке, в котором перечислены в диалоговом окне. Можно установить глобальные фильтры для всех сайтов на сервере или фильтры только для отдельных веб-сайтов. Когда несколько фильтров зарегистрированы для обработки одного и того же события, они вызываются последовательно, причем в первую очередь – фильтры с более высоким приоритетом. Для добавления фильтра в консоли ISM выберите веб-сервер или веб-сайт, откройте окно Properties (Свойства) и откройте вкладку ISAPI Filters.
Рис. 11.8. Указанные фильтры ISAPI выполняются для всех веб-сайтов, расположенных на сервере
Совет. При добавлении фильтров для веб-сайта в окне Properties отобразятся только фильтры, установленные для данного веб-сайта, несмотря на то, что могут существовать глобальные фильтры, наследуемые из главных настроек веб-сервера.
Нажмите на кнопку Add (Добавить) и введите название фильтра в поле Filter Name (Имя фильтра). Найдите файл ISAPI DLL в поле Executable, после чего нажмите на OK. Для изменения порядка загрузки фильтров используйте кнопки со стрелками.
После добавления или изменения глобального фильтра необходимо остановить и перезапустить веб-сервер, чтобы загрузить новые фильтры в память. Фильтр, добавляемый на уровне веб-сайта, автоматически загружается после добавления.
NoExecutableCGIUpload
Если переменная NoExecutableCgiUpload установлена на ненулевое значение, FPSE не будет устанавливать бит исполняемого файла на сценарии CGI, отгружаемые автором на веб-сайт с помощью FrontPage. Это позволит веб-мастеру устанавливать разрешение Execute (Выполнение) вручную после проверки сценария. Если переменные NoExecutableCgiUpload и AllowExecutableScripts установлены на нуль, можно отгружать и выполнять файлы ASP и IDC, но не файлы CGI или ISAPI.
1 | Да | Да | Нет |
NoMarkScriptable
Если переменная NoMarkScriptable установлена на ненулевое значение, пользователи FrontPage не смогут изменять бит обработки сценариями на любых папках веб-сайта; это сможет делать только веб-мастер.
0 | Да | Да | Да |
NoSaveResultsPipeTo
Ранние версии FrontPage позволяют обработчику форм по умолчанию (Save Results) передавать результаты формы по каналу любой случайно выбранной программе. Для обратной совместимости NoSaveResultsPipeTo отключает данную возможность при установке на ненулевое значение.
1 | Да | Да | Нет |
NoSaveResultsToAbsoluteFile
Если значение переменной NoSaveResultsToAbsoluteFile установлено на 1, обработчик форм по умолчанию (Save Results), обработчик Registration (Регистрация) и Discussion (Обсуждение) не cмогут осуществлять запись в файл с абсолютным путем, даже если текущая учетная запись имеет права NTFS на запись данных по этому пути; обработчики форм смогут записывать только в файл, находящийся внутри области веб-содержимого.
1 | Да | Да | Нет |
Обеспечение безопасности страниц при помощи ASP
Этот тип контроля доступа легко реализуется с использованием ASP. Следующий код демонстрирует, как создать страницу входа пользователей для аутентификации зарегистрированных клиентов сайта, после которой они получат доступ к странице со специальными предложениями. Пользователь, не прошедший аутентификацию, будет перенаправлен на другую страницу.
Этот тип контроля доступа легко реализуется с использованием ASP. Следующий код демонстрирует, как создать страницу входа пользователей для аутентификации зарегистрированных клиентов сайта, после которой они получат доступ к странице со специальными предложениями. Пользователь, не прошедший аутентификацию, будет перенаправлен на другую страницу.
<HTML> <HEAD> <TITLE>Customer Log On</TITLE> </HEAD> <BODY>
<FORM METHOD="POST" ACTION="../scripts/logon.asp"> <TABLE WIDTH="100%"> <TR> <TD>User name:</TD> <TD><INPUT TYPE="text" NAME="Username" SIZE="30" MAXLENGTH="30"></TD>
</TR> <TR> <TD>Password:</TD> <TD><INPUT TYPE="password" NAME="Password" SIZE="16" MAXLENGTH="16"></TD> <TR> <TD COLSPAN="2" align="CENTER"><INPUT TYPE ="submit" VALUE="Log On"></TD> </TR> </TABLE> </FORM>
</BODY> </HTML>
Данные, введенные в форме, передаются странице logon.asp в папке scripts с помощью действия POST. Если содержимое, к которому осуществляется доступ, является особо секретным, например, содержит информацию о кредитных картах или учетных записях, данные входа и любое секретное содержимое должны передаваться через соединение SSL. Сценарий logon.asp сверяет имя пользователя и пароль с информацией, находящейся в базе данных зарегистрированных пользователей. В случае соответствия сценарий logon.asp устанавливает сеансовую переменную и направляет клиента на страницу со специальными предложениями.
Если соответствующей информации в базе данных не обнаруживается, это означает, что пользователь еще не зарегистрирован, и происходит его перенаправление на страницу регистрации.
If NoMatch = TRUE Then Session("Authorized") = FALSE strURL = "registrationpage.asp" Else Session("Authorized") = TRUE strURL = "specialoffers.asp" End If Server.Transfer strURL
Теперь у нас есть сеансовая переменная, которая используется для проверки того, успешно ли пользователь вошел на сайт. С помощью этой проверки в начале каждой страницы с контролируемым доступом обеспечивается доступность страниц только для зарегистрированных пользователей, вошедших в систему.
<%@ LANGUAGE="VBScript" %> <% Option Explicit %> <% If Session("Authorized") = FALSE Then Response.Redirect "accessdenied.asp" End If %>
Всякий пользователь, попытавшийся осуществить доступ к такой странице и не прошедший аутентификацию, будет перенаправлен на страницу accessdenied.asp. На этой странице можно разместить сообщение о том, что пользователь не зарегистрирован, и предложение пройти процедуру регистрации.
Важно. Всегда используйте метод POST для отправки секретной информации из формы. При использовании метода GET введенные в форме данные будут отображаться в адресе URL, который видит каждый пользователь.
Общий шлюзовой интерфейс
Технология CGI представляет собой мощную систему, на компьютерах UNIX с ее помощью создается веб-содержимое в реальном времени. Однако каждое приложение является скомпилированной программой, и поэтому каждый раз после внесения изменений требуется перекомпиляция исполняемого файла. Для этого разработаны языки сценариев серверной части, интерпретируемые и исполняемые машиной сценариев с результирующими выходными данными, отправляемыми в приложение веб-сервера через CGI.
Сценарии CGI используются для расширения возможностей веб-серверов, чаще всего для обработки форм. Сценарий выступает в роли моста между ресурсом и сервером; ресурсом в данном случае является объект, обеспечивающий работу службы, например, программа электронной почты или база данных. Сценарий переводит предоставляемую ресурсом информацию в HTML-формат, чтобы сделать ее читабельной для запрашивающего браузера. Это расширяет возможности веб-сервера для обработки информации из всевозможных источников, расположенных на различных узлах.
Информация передается приложению CGI посредством указания имени приложения в адресе URL. Например:
<FORM ACTION=http://www.ваш_сервер.com/scripts/processorder.pl METHOD=POST>
Здесь URL указан в виде части тега FORM. После получения данных формы сервер ваш_сервер.com передаст управление приложению CGI (в данном случае это интерпретатор Perl, обозначенный файловым расширением .pl), которое обработает сценарий processorder.pl и запрос, после чего вернет страницу, созданную на базе полученных из формы данных.
IIS обеспечивает поддержку сценариев и программ CGI, однако предлагает более интегрированные технологии по работе с динамическим содержимым. IIS поддерживает интерфейс программирования серверных приложений ISAPI для более эффективной работы исполняемых файлов по сравнению со стандартным приложением CGI. ISAPI обеспечивает расширенный доступ к пространству памяти IIS по сравнению с простыми функциями stdin и stdout, на которых основаны многие технологии, например, Perl. Вследствие этого реализуется связь ASP с IIS через интерфейс ISAPI. Сценарии ASP могут непосредственно добавляться в HTML-страницы и выполнять все действия, реализуемые сценариями CGI. Рассмотрим технологию ASP и способы безопасной работы активного содержимого.
Ошибки ASP и журнал событий Windows
Ошибки ASP можно передавать в журнал событий Windows, если указаны соответствующие параметры в окне Process Options Properties (Свойства обработки). Для настройки этих параметров откройте окно WWW Service Master Properties (Главные свойства службы WWW), щелкнув правой кнопкой мыши на сервере в Internet Services Manager (Диспетчер служб интернета). Откройте вкладку Home Directory (Домашний каталог), после чего нажмите на кнопку Configuration (Настройка). Откроется окно Application Configuration Properties (Настройка конфигурации приложения). Откройте вкладку Process Options (Обработки опций) (см. рис. 11.13).
Рис. 11.13. Параметры конфигурации приложения устанавливаются на уровне веб-сайта и виртуального каталога, а опции обработки – только на главном уровне
Отметьте опцию Write Unsuccessful Client Requests To Event Log (Заносить неудачные запросы клиентов в журнал событий), и наиболее серьезные ошибки ASP будут фиксироваться в журнале событий Windows.
Опция Enable Debug Exception Catching (Включить перехват исключений при отладке) отмечается только при отладке, так как она фиксирует любые сообщения об ошибках, поступающие от компонента. Так как отладка должна осуществляться только на сервере разработки, убедитесь, что данная опция отключена.
Отладка активного содержимого
При поиске в интернете встречаются ссылки на страницы, сгенерированные поисковой системой, которые вызывают ошибку времени выполнения сценария. Причина ошибки заключается в некоторых сведениях, нередко содержащих используемую сценарием информацию, например, данные о структуре бизнеса или расположении базы данных. Это значит, что страница со сценарием не была достаточно протестирована перед публикацией в интернете. Если сценарии, генерирующие ошибки, публикуются в интернете не полностью отлаженными, основные поисковые системы смогут выводить о них некоторые данные.
Например, при поиске в системе Altavista (www.altavista.com) по строке "Microsoft VBScript runtime error + .inc" появятся сотни результатов поиска, и во многих будет указан полный путь и имя файла вставки (.inc). Если присоединить это имя к имени узла и вызвать страницу по получившемуся адресу в веб-браузере, то велика вероятность того, что отобразится содержимое файла вставки.
Подобная утечка информации о системе чрезвычайно полезна для хакера при планировании атаки на сервер. Мы уже говорили о важности связывания файлов вставок с ASP, однако следует убедиться в том, что веб-разработчики качественно отлаживают все страницы со сценариями в автономном режиме перед их публикацией на действующем сервере. Следует также выполнять поиск в интернете собственных страниц для определения корректности их отладки, после чего удалять или переименовывать их в случае ошибок.
Параметры приложения
Для разрешения выполнения сценариев на сервере нужно настроить параметры приложения IIS на главном уровне, уровне сайта или уровне виртуального каталога. Приложением IIS является любой файл (набор файлов), реализующий некоторую функцию и выполняющийся внутри определенных папок веб-сайта, используя границы папки для определения области действия приложения. Каждый файл или папка, находящиеся в "стартовой" папке веб-сайта, являются частью приложения, пока не будет найдена другая стартовая папка. С одним веб-сайтом можно связать несколько приложений. Приложение распределяет информацию среди своих файлов. Например, приложения ASP распространяют информацию о контексте, состоянии сеанса и настройке переменных среди страниц приложения.
Перечень девяти аспектов безопасности, о которых должен знать разработчик
Убедитесь, что разработчики выполняют следующие девять правил при создании динамического содержимого для сервера IIS.
Указывать кодировку в начале каждой страницы.Фильтровать и кодировать все данные формы. Разработчикам следует обратиться к материалу CERT за информацией о вредоносных тегах HTML по адресу www.cert.org/advisories/CA-2000-02.html, затем изучить следующие статьи базы знаний Microsoft Knowledge Base: Q252985 HOWTO: Prevent Cross-Site Scripting Security Issues;Q253119 HOWTO: Review ASP Code for CSSI Vulnerability.Фильтровать и кодировать все данные cookie. Значения, считываемые из элементов cookie, не должны восприниматься как доверенное содержимое, поэтому они должны фильтроваться и кодироваться согласно пункту 2 данного перечня. Никогда не храните важную информацию в постоянных элементах cookie.Использовать шифрование SSL для отправки и приема любой важной информации. Пароли, информация о кредитных картах и любые персональные данные идентификации должны передаваться только через защищенное SSL-соединение.Отключить функцию автозавершения в Internet Explorer для полей паролей. Добавьте атрибут AUTOCOMPLETE=OFF в тег <FORM> или <INPUT> всех форм, используемых для запроса паролей. Например: <INPUT TYPE=password NAME=Password SIZE=16 MAXLENGTH=16 AUTOCOMPLETE=OFF>Завершать сеансы после пятиминутного простоя. По умолчанию значение параметра Connection Timeout (Время простоя соединения) в IIS равно 900 секундам. Смените это значение на 300 секунд с помощью Internet Services Manager (Диспетчер служб интернета). В качестве альтернативы, если пользователи осуществляют вход на сайт, вводите следующий код вверху каждой страницы: <SCRIPT Language="JavaScript"> <!-- window.setTimeout("window.navigate('Logoff.asp')", 300000); //--></SCRIPT>
Пользователи будут перенаправляться на страницу Logoff.asp после пяти минут отсутствия каких-либо действий.Удалять из кода все комментарии. Хорошие разработчики всегда качественно комментируют создаваемый ими код, однако эти комментарии необходимо удалять на страницах, загружаемых на веб-сервер, потому что они могут стать подсказками для хакеров.Использовать компонент COM+ для хранения информации о подключениях к базе данных. Многие разработчики сохраняют информацию о подключениях базы данных в файле global.asa. Эта информация содержит имя сервера, имя базы данных, имя пользователя и пароль базы данных, поэтому она должна быть защищена. Обратитесь к разделу "Parsing the COM+ Constructor String" по адресу http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnduwon/html/d5bizdev.asp для получения дополнительных сведений.Использовать сохраненные процедуры для доступа к базе данных. Сохраненные процедуры обеспечивают больший уровень контроля над данными и производительностью работы SQL-выражений.
Перехват ошибок
Обычно веб-разработчики ограничены во времени и, как правило, ставят на первое место внешний вид, удобство работы и функциональность, а о безопасности думают далеко не в первую, если не в последнюю, очередь. В лекции 9 говорилось о том, что такой подход недопустим при разработке содержимого для интернета. Разработка и тестирование должны проводиться в автономном режиме для успешного устранения всех угроз безопасности создаваемых сценариев, а это возможно при таком выполнении сценария, когда семантические ошибки программирования выявляются сами по себе.
Синтаксические ошибки находить легко, так как программный компилятор или интерпретатор прерывает выполнение кода и обозначает строку с синтаксической ошибкой. Плохо обученный разработчик исправит свои синтаксические ошибки, после чего отгрузит новый код, уверенный в отсутствии ошибок. Однако семантические ошибки или ошибки времени выполнения могут возникнуть во время непосредственного выполнения программы, что позволяет выявить исходный код любым пользователем, запустившим сценарий. Например, при добавлении шестого товара в корзину покупок электронного магазина произойдет семантическая ошибка, если максимальное число товаров для покупки, установленное в программе, равно пяти.
Необходимо, чтобы код разрабатывался программистами с учетом аспектов безопасности. При написании безопасных программ следует проверять наличие файла перед его открытием, а также правильность вводимых значений. Код должен тестироваться посредством ввода различных значений, среди которых есть корректные значения, значения, являющиеся пограничными (т.е. находящиеся на границе между допустимыми и недопустимыми значениями), а также некорректные значения. Такое тестирование предотвратит большую часть ошибок, возникающих из-за вводимых пользователем данных.
Поскольку идеально написанного кода не существует, необходимо обеспечить поддержку активным содержимым непредвиденных ошибок и отображение соответствующих уведомлений об их возникновении. По умолчанию файл 500-100.asp обрабатывает все ошибки, возникающие при компиляции или запуске файлов .asp.
При возникновении ошибки ASP IIS возвращает файл 500-100.asp с информацией о ней, например, номер строки, в которой произошла ошибка, и ее описание.
Следующий код VBScript фиксирует любые возникающие ASP-ошибки в файле журнала, а также выводит сообщение для пользователя. Эти действия предотвращают отображение исходного кода страницы, вызвавшей ошибку. Этот код можно модифицировать на передачу информации об ошибке по электронной почте веб-мастеру.
Листинг 11.1.
(html, txt)
Обработка ошибок устанавливается на главном уровне, веб-уровне или уровне каталога посредством изменения свойств сообщений об ошибках HTTP, передаваемых клиентам при их возникновении.
Для настройки IIS на отображение сообщения об ошибке откройте консоль Internet Services Manager (Диспетчер служб интернета) и щелкните правой кнопкой мыши на нужном сервере или веб-сайте. Выберите команду Properties (Свойства), откройте вкладку Custom Errors (Другие ошибки) и прокрутите вниз список сообщений об ошибках, чтобы отобразить HTTP Error 500;100 (см. рис. 11.11).
Нажмите на кнопку Edit Properties (Изменить параметры) для изменения параметров сообщения об ошибке, указав созданную или измененную страницу с текстом уведомления (см. рис. 11.12).
Совет. Убедитесь, что файл обработки ошибок не содержит синтаксических ошибок или ошибок времени выполнения; если в коде присутствуют ошибки, они отобразятся в веб-браузере. Строка 5 приведенного выше кода On Error Resume Next обеспечивает выполнение файла без возникновения ошибок.
Рис. 11.11. Измененные страницы с информацией об ошибках предоставляют вам и вашим пользователям полезные данные
Рис. 11.12. Если типом выводимых данных является URL, то этот URL должен существовать на локальном сервере
'Зафиксировать ошибку в файле журнала. 'Изменить путь к файлу журнала для конкретной системы. 'Нужно присвоить учетной записи IUSR_имя-компьютера разрешение на 'запись и изменение файла. strErrorLog = "D:\temp\custom_error.log" set objFSO = Server.CreateObject("Scripting.FileSystemObject") Set objTStream = objFSO.OpenTextFile(strErrorLog, 8, True) '8 = ForAppending If Err.Number = 0 Then objTStream.WriteLine strErrorMsg & vbCrlf End If If Err.Number = 0 Then objTStream.Close blnLogFail = False Else blnLogFail = True End If 'Вывод сообщения в веб-браузере. %> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <HTML> <HEAD> <TITLE>Error</TITLE> </HEAD> <P>К сожалению, запрошенная вами страница содержит ошибку и не может быть отображена.</P> <% 'Добавить ссылки для возврата на предыдущую или домашнюю страницу. strReferrer = Request.ServerVariables("HTTP_REFERER") If Len(strReferrer) Then Response.Write "<p><A HREF=""javascript:history.go(-1)"">Вернуться на предыдущую страницу</A></P> End IF Response.Write "<P>Возврат на <A HREF=""http://www.ваш_домен.com""> домашнюю страницу</A></P> %> </P> <P>Пожалуйста, обратитесь к <A HREF="mailto:webmaster@ваш_домен.com">веб-мастеру</A> для выяснения причин возникновения данной проблемы</P> </BODY> </HTML>
Листинг 11.1.
Обработка ошибок устанавливается на главном уровне, веб-уровне или уровне каталога посредством изменения свойств сообщений об ошибках HTTP, передаваемых клиентам при их возникновении.
Для настройки IIS на отображение сообщения об ошибке откройте консоль Internet Services Manager (Диспетчер служб интернета) и щелкните правой кнопкой мыши на нужном сервере или веб-сайте. Выберите команду Properties (Свойства), откройте вкладку Custom Errors (Другие ошибки) и прокрутите вниз список сообщений об ошибках, чтобы отобразить HTTP Error 500;100 (см.
рис. 11.11).
Нажмите на кнопку Edit Properties (Изменить параметры) для изменения параметров сообщения об ошибке, указав созданную или измененную страницу с текстом уведомления (см. рис. 11.12).
Совет. Убедитесь, что файл обработки ошибок не содержит синтаксических ошибок или ошибок времени выполнения; если в коде присутствуют ошибки, они отобразятся в веб-браузере. Строка 5 приведенного выше кода On Error Resume Next обеспечивает выполнение файла без возникновения ошибок.
Рис. 11.11. Измененные страницы с информацией об ошибках предоставляют вам и вашим пользователям полезные данные
Рис. 11.12. Если типом выводимых данных является URL, то этот URL должен существовать на локальном сервере
Переменные конфигурации FPSE
Иногда информация, предоставляемая средствами командной строки, является очень скудной. Для проверки или настройки переменных конфигурации расширения сервера найдите их в реестре или в файле Service.cnf. Переменные устанавливаются на одном из следующих уровней.
Глобальные переменные. Применяются ко всем виртуальным серверам и подсайтам на компьютере сервера и устанавливаются в реестре по адресу HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Shared Tools\Web server Extensions\All Ports.Переменные виртуального сервера. Применяются к одному виртуальному серверу и устанавливаются в реестре по адресу HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\ Web server Extensions\Ports\<Номер порта>.Переменные веб-сайтов и подсайтов. Устанавливаются посредством изменения текстового файла _vti_pvt/Service.cnf в корневом веб-сайте или подсайте.
Если переменная никогда не устанавливалась, она может не иметь записи в реестре. Конфликты настроек разрешаются в следующем порядке: переменные конфигурации подсайтов имеют высший приоритет, переменные конфигурации виртуальных серверов – средний приоритет, а переменные глобальной конфигурации – низший. Наиболее важные переменные описываются в последующих разделах.
При использовании FPSE не требуется доступ с открытием файлов для общего пользования на компьютере веб-сервера, а пользователям не нужен ни FTP, ни Telnet для управления своими веб-страницами, так как управление осуществляется через HTTP. Тем не менее, внимательно отслеживайте все уведомления безопасности Microsoft, чтобы быть в курсе появления новых уязвимых мест. Программа FrontPage 2002 Server Extensions улучшена по сравнению с предыдущими версиями, но вам следует ознакомиться с онлайновой справкой и разобраться в том, как управлять этими расширениями.
Подписывание кода
Java-апплеты или элементы ActiveX повышают уровень функциональности сайта, реализовывая ниспадающие меню или бегущую строку. Так как пользователям интернета известны уязвимые места таких апплетов, то после их разработки и тестирования нужно убедить посетителей в том, что содержимому сайта можно доверять, и что он безопасен. Многие сетевые экраны настроены на блокирование апплетов без доверия, а политики безопасности предусматривают запрет установки и выполнения сторонних апплетов на компьютерах сети. Самым простым способом убедиться в безопасности апплета или макроса является подпись объекта при помощи цифрового сертификата подписи кода.
Сертификат идентифицирует организацию и выпускается бюро сертификатов только после того, как оно подтвердит наличие организации и ее сферу деятельности. Примером бюро сертификатов является компания VeriSign. Сертификаты для подписывания кода (в VeriSign они называются цифровыми идентификаторами) позволят разработчикам ставить цифровую подпись на программное обеспечение и макросы для обеспечения безопасности их доставки через интернет. Любой пользователь, загрузивший подписанный цифровым сертификатом элемент ActiveX, Java-апплет, динамически подсоединяемую библиотеку, файлы .cab или .jar, может быть уверен в том, что загружаемый код действительно поступает от вас, а также в том, что он не был изменен или поврежден с момента создания и подписи. Подписывание программ выступает в роли упаковки, в которую "заворачивается" программное обеспечение, так как в случае изменения программы цифровая подпись станет недействительной аналогично тому, как поврежденная пленка на запакованных продуктах предупреждает потребителя о том, что с товаром что-то произошло.
К сожалению, необходимо использовать различные сертификаты для подписи кода от двух основных поставщиков активного содержимого – Microsoft и Netscape. Технология Microsoft Authenticode позволяет ставить цифровую подпись на файлах .exe, .cab, .dll и .ocx; средства Netscape Object Signing позволяют заверять цифровой подписью Java-апплеты, сценарии JavaScript, надстройки и любые файлы JAR. Authenticode заверяет программы, предназначенные только для браузеров Microsoft Internet Explorer, а сертификаты Object Signing действительны только для браузеров Netscape. Вам понадобятся дополнительные сертификаты для подписи макросов для Office 2000/XP и объектов VBA, а также содержимого, созданного с помощью Macromedia Director Shockwave Studio или Macromedia Flash.
Многоцелевые сертификаты для подписывания программ можно получить, например, от бюро сертификатов Thawte по адресу http://www.thawte.com. Эти сертификаты используются несколькими приложениями, поэтому не нужно приобретать отдельный сертификат для каждого подписываемого приложения.
Подсайты
FPSE позволяет создавать отдельные подсайты. Подсайт представляет собой законченный FrontPage-расширенный веб-сайт, который можно создать на любом уровне структуры содержимого, включая уровень, находящийся под другим подсайтом. Несмотря на то, что данные объекты при доступе через веб-веб-браузер выглядят как обычные подпапки, их можно полностью отделить от родительского веб-сайта. Если сайт содержит раздельные области содержимого, управление которыми осуществляется различными людьми, и нужно запретить авторам доступ ко всему содержимому сайта, используйте раздельные подсайты для сегрегации данных. Это позволит структуре содержимого веб-сайта соответствовать структуре предприятия; например, реализовывать для различных отделов управление только собственными областями данных на сайте. Так как каждый подсайт имеет свои настройки безопасности, безопасность может быть настроена на достаточно высоком уровне детализации параметров защиты. Например, автору FrontPage-расширенного веб-сайта не должно автоматически присваиваться разрешение на редактирование любых подсайтов.
Так как виртуальный сервер имеет свои собственные параметры безопасности и свой собственный список пользователей, создание виртуального сервера является способом ограничения доступа к веб-содержимому. Дополнительным преимуществом виртуальных серверов и подсайтов является потенциально более высокая производительность, так как время, необходимое для пересчета гиперссылок, прямо пропорционально числу и размеру документов, хранимых на одном веб-сервере.
Совет. Когда администратор устанавливает списки ACL для FrontPage-расширенного веб-сайта с помощью команды Permissions клиента, FrontPage выводит список учетных записей сервера по умолчанию. Можно создать ограниченный список пользователей и групп для каждого веб-сайта, расширенного при помощи FrontPage. Это предотвратит отображение полного списка учетных записей Windows. Обратитесь к документации FPSE и выясните, как это сделать.
PrivateBrowsable
Чтобы запретить посетителям сайта просматривать каталог _private, установите переменную PrivateBrowsable на нуль. После установки этот параметр будет применяться ко всем создаваемым веб-страницам. Он не оказывает влияния на веб-страницы, созданные перед установкой данного параметра.
0 | Да | Да | Нет |
ПРОБЛЕМА
Иван, молодой разработчик, работающий над новым сайтом электронной коммерции, создает сценарии ASP для подключения веб-сайта к базе данных Microsoft SQL Server, содержащей информацию о клиентах, т.е. их имена, адреса, заказы и т.д. В понедельник утром Иван заявляет, что немедленно увольняется из компании и начинает новую карьеру. Время, отведенное на разработку сайта, неумолимо истекает, поэтому необходимо привлечь на место Ивана другого сотрудника. Вас устраивало качество выполнения Иваном своей работы, однако нужно удостовериться в том, что ее можно использовать.
Первым делом запретите Ивану доступ к файлам ASP и всей сети организации. Проинформируйте сетевого администратора о том, что учетная запись Windows, принадлежащая Ивану, должна быть удалена. Это запретит бывшему сотруднику доступ к сети. В дополнение к этому все члены команды разработки должны сменить свои пароли при следующем входе в систему. Это мера предосторожности необходима на тот случай, если Иван знает пароли других разработчиков компании.
Так как Иван имел доступ к базе данных SQL Server, он знает имя пользователя и пароль доступа, используемый страницами ASP для открытия соединения. У него могла быть и своя собственная учетная запись SQL Server с повышенными привилегиями, позволявшими ему проводить работу по разработке. Проинформируйте администратора базы данных о том, что учетная запись Ивана в базе данных должна быть удалена, а также об изменении пароля, используемого страницами ASP. Кроме этого, необходимо сменить остальные системные пароли, которые мог знать Иван.
Следующая задача состоит в том, чтобы провести обзор всей выполненной Иваном работы. Несмотря на то, что написанный им код хорошо закомментирован, нужно просмотреть каждую строку и выяснить следующее.
Каждая страница содержит в начале строку, устанавливающую кодировку.Все данные, вводимые пользователем в формы, или данные из элементов cookie проверяются на наличие запрещенных символов.Все данные, получаемые из базы данных для отображения на веб-странице, подвергаются кодировке.В коде отсутствует опасный или вредоносный код, например, ненужный вызов почтового сервера.В коде не используются системные пароли, доступ к ним осуществляется с помощью компонента COM+.Все вызовы базы данных выполняются посредством сохраненных процедур.
После того как код Ивана пройдет эту проверку, протестируйте его на сервере разработки для выявления синтаксических или семантических ошибок. Проверка должна включать в себя передачу данных сценариям (не только корректных значений, но и величин, превышающих максимально допустимые значения или соответствующих граничным условиям). Например, проверьте, каким образом осуществляется поддержка заказа на сумму, равную точно $500, если максимально разрешенной суммой покупки является $500.
Хотя Иван мог и вовсе не включать в код ненужные или вредоносные фрагменты, процедура проверки необходима, так как Иван осуществлял активный доступ к вашей сети и ее ресурсам.
Программное обеспечение для контроля над исходными файлами
В программах контроля над исходными файлами используется система приписки и отписки файлов, аналогичная системе выдачи и приема книг в библиотеке. Если файл занят пользователем, то его больше никто не может использовать или редактировать, пока он не будет освобожден. Если файл не приписан для редактирования, его никто не сможет изменить. В параметрах веб-приложения обеспечьте сохранение всех файлов на сервере разработки. Тогда пользователь сможет загружать нужный файл на свой компьютер, редактировать и тестировать его, после чего отгружать обратно на сервер. После одобрения внесенных изменений отредактированный файл можно отгружать на работающий сервер.
Программное обеспечение, предназначенное для контроля над исходными файлами, можно интегрировать с IIS, если установлены серверные расширения FrontPage Server Extensions (FPSE). FPSE представляет собой набор программ и сценариев, поддерживающих разработку в FrontPage (популярный редактор веб-страниц от Microsoft) и расширяющих функциональные возможности IIS. Для установки FPSE прочтите раздел "Серверные расширения FrontPage" далее в этой лекции. Не рекомендуется устанавливать FPSE на веб-серверах.
Если расширения FPSE установлены, включите контроль версий файлов.
Откройте консоль Internet Services Manager (Диспетчер служб интернета) и в дереве консоли щелкните правой кнопкой мыши на веб-объекте, для которого включается контроль исходных файлов.Во всплывающем меню выберите Properties (Свойства), после чего откройте вкладку Server Extensions (Серверные расширения) (см. рис. 11.5).
Рис. 11.5. Отслеживайте редактирование веб-содержимого с помощью включения контроля версий
Отметьте опцию Enable Authoring (Включить разработку) и в поле Version Control (Контроль версий) выберите Use External (Использовать внешнюю программу) при наличии программы контроля над исходными файлами (например, Visual SourceSafe) или Use Built-In (Использовать встроенную программу) для использования базового контроля FrontPage.
Программа Visual SourceSafe (см. рис. 11.6) представляет собой приложение уровня предприятия для контроля над изменением исходных файлов; она дополнительно обеспечивает отслеживание версий и функции отката. Для получения информации об интеграции Visual SourceSafe с программой FrontPage обратитесь к разделу "Контроль исходных файлов серверных расширений" в Microsoft FrontPage Server Extensions Resource Kit.
Рис. 11.6. Программа Microsoft Visual SourceSafe сохраняет файлы проектов в базе данных, позволяя открывать старые версии изменяемых файлов
FrontPage предоставляет два метода контроля над исходными файлами: встроенную упрощенную функцию контроля и интеграцию с внешней программой, совместимой с FrontPage (например, Visual SourceSafe). Упрощенный контроль над исходными файлами обеспечивает меры по контролю над пользователями, управляющими страницами веб-сайта с функциями приписки и отписки. Перед использованием этого компонента FrontPage на IIS необходимо установить FPSE.
Протокол исключений роботов
Для указания разделов сайта, которые не должны посещаться роботом, создайте специально отформатированный файл с именем robots.txt. Разместите этот файл на верхнем уровне веб-пространства, например, по адресу http://www.ваш_домен.com/robots. Когда робот найдет этот документ, он проанализирует содержимое данного файла, устанавливающее базовую политику доступа роботов. К сожалению, робот действует по принципу "разрешено все, что не запрещено". На сайте может существовать только один файл robots.txt, поэтому не размещайте файлы robots.txt в различных папках, так как роботы никогда не будут их считывать. Если веб-разработчики создают свои собственные файлы robots.txt, нужно осуществить их слияние в один файл. Можно также использовать META-теги роботов (о которых пойдет речь в следующем разделе).
Содержимое файла robots.txt может быть таким:
User-agent: * Disallow: /scripts/ Disallow: /includes/ Disallow: /mike/
В этом примере роботы могут посещать все части сайта, кроме трех вложенных папок: scripts, includes и mike. Регулярные выражения не поддерживаются в строках User-agent или Disallow, однако звездочка ("*") в поле User-agent имеет специальное значение – "любой робот". Следовательно, нельзя вводить в файл такие строки: Disallow: /tmp/* или Disallow: *.gif. Укажите отдельную строку Disallow для каждой папки, которую нужно исключить из списка посещаемых роботом объектов. Нельзя включать в запись и пустые строки, так как они используются для разделения нескольких записей.
Ниже приведено несколько примеров того, как запретить роботам посещение всего сайта целиком или его отдельных частей.
Чтобы исключить всех роботов для всего сайта:
User-agent: * Disallow: /
Чтобы исключить всех роботов для отдельных папок на сайте:
User-agent: * Disallow: /scripts/ Disallow: /includes/ Disallow: /private/
Чтобы исключить одного робота:
User-agent: BadBot Disallow: /
Чтобы разрешить определенного робота:
User-agent: WebCrawler Disallow:
Так как в этом случае не может существовать поле "Allow" (Разрешить), то для исключения всех файлов, кроме одного, поместите эти файлы в отдельную подпапку (например, private), и перенесите один файл на уровень выше, чем данная папка, например:
User-agent: * Disallow: /corporate/private/
В качестве альтернативы можно явным образом запретить доступ робота к каждой странице:
User-agent: * Disallow: /corporate/private.html Disallow: /corporate/sensitive.html Disallow: /corporate/hr.html
Файл robots.txt должен исключать все папки, кроме тех, которые действительно должны быть проиндексированы и доступны через поисковые машины интернета.
Проверка клиентской части
IIS передает данные, отправленные веб-формой, сценариям для обработки, и первой возможностью проверки и фильтрации этих данных является веб-браузер пользователя. Эта проверка называется проверкой клиентской части. Она реализуется с помощью сценариев JavaScript, так как они могут выполняться и в Internet Explorer, и в Netscape. Эта проверка подтверждает, что данные, обрабатываемые сценарием, действительно введены в полях формы. В примере функция JavaScript проверяет ввод номера телефона в поле формы с именем Telephone:
function ValidateFormData(form) { var theNumber = form.Telephone.Value; var valid = true var GoodChars = "0123456789()-+ " var i = 0 if (theNumber =="") { // Возврат значения "ложь" при отсутствии номера телефона valid = false } for (i =0; I <= theNumber.length -1; i++) { if (GoodChars.indexOf(theNumber.charAt(i)) == -1) { alert(theNumber.charAt(i) + "является некорректным символом.") form.Telephone.focus(); valid = false } } return valid }
Данные, введенные в поле формы Telephone, проверяются перед отправкой на сервер посредством вызова функции ValidateFormData в методе onSubmit формы следующим образом:
<FORM ACTION="scripts/process.asp" METHOD="POST" onSubmit="return ValidateFormData(this);">
Следующий фильтр, написанный на JavaScript, является примером того, как следует удалять специальные символы:
function RemoveBadChars(strTemp) { strTemp = strTemp.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,""); return strTemp; }
Еще одним способом контроля вводимых данных является указание предельного размера данных в полях ввода; это ограничение устанавливается добавлением атрибута MAXLENGTH в теги ввода текста. Например, если поле предназначено для ввода восьмизначного числа, следует ограничить вводимые пользователем данные:
<input type="text" name="ordernumber" MAXLENGTH="8">
Такая блокировка усложняет хакеру задачу по вводу вредоносного кода.
Тег <applet></applet> или <script></script> сам по себе занимает 17 символов.
Проверка клиентской части вводимых данных предотвращает их ненужную обработку, если пользователь допустил ошибку. Однако эта проверка не является столь же функциональной, как проверка серверной части. При использовании сценариев для получения вводимых данных <TEXT> из формы HTML их тип неизвестен, и некоторые символы, в обычной ситуации отбрасываемые фильтром, могут оказаться приемлемыми.
Если сценарий предназначен для обработки информации из базы данных, нельзя по умолчанию предполагать, что эти данные являются корректными. При контроле ввода информации в базу данных следует использовать проверку корректности в точке ввода данных. Эта проверка является составляющей частью качественно реализованной базы данных.
Элементы управления проверкой ASP.NET. Так как проверка вводимых пользователем данных очень важна с точки зрения безопасности, ASP.NET (последняя версия ASP от Microsoft для платформы .NET) обеспечивает серверные элементы управления, проверяющие вводимые пользователем данные и отображающие сообщения об ошибках при обнаружении некорректных данных. Элементы управления обычно выполняют проверку в коде сервера либо, при работе с веб-браузером, поддерживающим DHTML, – и на клиенте.
В примере фрагмент кода веб-приложения ASP.NET обеспечивает ввод пользователем правильного адреса электронной почты; проверка выполняется элементом управления RegularExpressionValidator. При отправке данных формы содержимое поля адреса электронной почты проверяется на соответствие регулярному выражению, и если соответствие не подтверждается, пользователь получает сообщение об ошибке.
E-mail Address: <BR> <input id=txtEmail type=text size=35 MAXLENGTH=35 runat=server/>
<asp:RegularExpressionValidator ID=valEmailAddress ControlToValidate=txtEmail ValidationExpression=".*@.*\..*" ErrorMessage="Введен неправильный адрес электронной почты." Display=None EnableClientScript=true Runat=server/>
При передаче адреса электронной почты неправильного формата отображается содержимое ErrorMessage. ASP.NET предоставляет целый набор подобных элементов управления, связанных с безопасностью. В случае переноса сайта на ASP.NET разработчики должны уметь применять эти дополнительные меры безопасности в коде, с которым они работают.
Проверка серверной части
Сценарий должен проверять и очищать данные перед их обработкой, что обеспечит удаление всех некорректных данных и правильное выполнение кода. Очень важно реализовать проверку серверной части, так как некоторые данные передаются внутри самого URL, который не проверяется на клиентской части. Для проверки данных используются и более мощные алгоритмы. Язык сценариев VBScript версии 5.0 и выше работает с регулярными выражениями с целью фильтрации и очистки входящих данных. Посредством создания шаблонов, соответствующих конкретным строкам, осуществляется поиск и замена введенных пользователем данных для проверки их на наличие черт вредоносного характера. Синтаксис шаблона VBScript заимствован из языка Perl.
Следующий пример кода выполняет удаление всех символов, не лежащих в диапазонах 0 – 9, a – z, A – Z и не являющихся пробелом, из строки strTainted:
<% Set reg = New RegExp Reg.Pattern = "\W+" strTainted = reg.Replace(strTainted, "") %>Совет. Для получения более подробной информации о написании общих регулярных выражений с помощью VBScript посетите страницу http://msdn.microsoft.com/workshop/languages/clinic/scripting051099.asp. Общая информация о сценариях Windows находится по адресу http://msdn.microsoft.com/scripting/.
При запросе сценарием информации из базы данных, скорее всего, осуществляется сохранение процедуры. Общий объем данных, переданных сохраненным процедурам, не должен превышать установленный максимум. Все отправляемые запросы нужно проверить на превышение максимально допустимого размера.
Данные, передаваемые базе данных, должны проходить фильтрацию. Злоумышленник в запросах SQL может отправить групповые символы ("%" и "_"), разрешенные в выражениях SQL, и получить все записи из таблицы SQL. Осуществляйте фильтрацию этих символов в любых вводимых пользователем запросах к базе данных.
Проверка вводимых пользователем данных
Наиболее часто встречающимся недостатком сценариев, используемых для генерирования динамического содержимого, является обработка вводимых пользователем данных (например, данных формы) без их проверки. При вводе некорректных данных хакерам, их отправившим, открывается возможность для выполнения ряда атак. Любой сайт, осуществляющий прием данных от пользователя, подвержен атакам, если получаемые данные не проверяются перед их обработкой.
В языке HTML для отличия текста от тегов разметки используются некоторые символы. Например, символ "меньше чем" ("<") означает начало тега HTML. Когда веб-браузер считывает символ "<", он осуществляет поиск корректного тега HTML, располагающегося после этого символа. Если на странице HTML требуется отобразить сам символ "<", разработчику нужно заменить "<" на <.
Теги могут либо управлять форматом содержимого страницы, либо представлять программу для выполнения (например, тег <SCRIPT> представляет код различных языков сценариев). Хакер может вставить в поле формы вредоносный код вместо ожидаемого содержимого. Например, вместо указания адреса электронной почты в гостевой книге веб-сайта ввести следующий код:
<A HREF=http://www.плохой_сервер.com/scripts/вредоносный.asp>Щелкните здесь – специальное предложение</A>.
Если код не будет проверен, то сценарий возвратит эти данные каждому пользователю, просматривающему комментарии посетителей в гостевой книге, и отобразит гиперссылку: "Щелкните здесь – специальное предложение". Пользователь, щелкнувший на этой ссылке, перенаправится на сайт www.плохой_сервер.com. Все будет выглядеть так, будто вредоносный код поступил с вашего сайта. При отправке и отображении вредоносного сценария (так называемая "подстановка сценариев") хакер потенциально может захватить управление сайтом.
Непроверенные введенные данные могут вызывать, например, нарушение целостности данных, установку и считывание элементов cookie и перехват вводимых пользователем данных. Принимая во внимание огромное количество пробелов в безопасности, создаваемых непроверенными данными на общем веб-сервере, удивительно, что на большинстве сайтов до сих пор отсутствует проверка данных перед их обработкой. Если ваши сценарии принимают данные от пользователей интернета, обеспечьте их проверку, кодирование и фильтрацию символов со специальным значением, чтобы они не воспринимались как код HTML.
Разрешения
Разрешения на содержимое FrontPage-расширенного веб-сайта применяются ко всему веб-сайту, поэтому веб-разработчики имеют доступ ко всем страницам, а посетители могут их все просматривать. Разделите содержимое на сервере таким образом, чтобы различные группы пользователей имели разрешения на администрирование, разработку или просмотр различных областей содержимого посредством деления его на разделы.
Важно. Не включайте блокировку учетной записи в гостевой учетной записи интернета, так как это может привести к успешному выполнению атаки на отказ в обслуживании (DoS). Вместо этого обеспечьте устойчивый пароль учетной записи в целях предотвращения его взлома.
FrontPage обеспечивает полный доступ ко всем файлам для членов группы Administrators (Администраторы) и учетной записи SYSTEM. Разрешения на выполнение посетителями сайта, разработчиками и администраторами присваиваются всем папкам, помеченным исполняемым виртуальным корневым каталогом. Разрешение на выполнение устанавливается только в том случае, если в окне Properties (Свойства) расширенного с помощью FrontPage веб-сайта отмечена опция Allow Authors To Upload Executables (Разрешить авторам отгружать исполняемые файлы).
Списки ACL для FrontPage-расширенного веб-сайта приведены в таблице 11.1.
Папка верхнего уровня корневого каталога веб-сайта или страницы | Посетители: чтение, выполнение Авторы: чтение, выполнение, запись и удаление Администраторы: чтение, выполнение, запись, удаление и изменение разрешений | Посетители сайта: чтение Авторы: чтение, запись и удаление Администраторы: чтение, запись, удаление и изменение разрешений. |
Папка веб-сайта в каталоге высшего уровня | Посетители сайта: чтение Авторы: чтение, выполнение, запись и удаление Администраторы: чтение, выполнение, запись, удаление и изменение разрешений | Посетители сайта: чтение Авторы: чтение, запись и удаление Администраторы: чтение, запись, удаление и изменение разрешений. |
Исполняемая папка | Присвоение папке статуса исполняемой не влияет на текущий список ACL. | Присвоение папке статуса исполняемой предоставляет разрешения на выполнение посетителям сайта, авторам и администраторам в текущем списке ACL. |
Папка, содержащая результаты форм | Если папка содержит группу обсуждения или результаты обработки информации базы данных, FrontPage присваивает разрешения на запись для посетителей сайта в текущем списке ACL. | Если папка содержит группу обсуждения или результаты обработки информации базы данных, FrontPage присваивает разрешения на запись для посетителей сайта в текущем списке ACL. |
Папка FrontPage_vti_pvt | Посетители сайта: чтение, выполнение, запись, удаление Авторы: чтение, выполнение, запись, удаление Администраторы: чтение, выполнение, запись, удаление, изменение разрешений | Посетители сайта: чтение, запись, удаление. Авторы: чтение, запись, удаление. Администраторы: чтение, запись, удаление, изменение разрешений. |
Папка FrontPage_vti_log | Посетители сайта: чтение, выполнение, запись, удаление Авторы: чтение, выполнение, запись, удаление Администраторы: чтение, выполнение, запись, удаление, изменение разрешений | Посетители сайта: чтение, запись, удаление. Авторы: чтение, запись, удаление. Администраторы: чтение, запись, удаление, изменение разрешений. |
Папка FrontPage_vti_txt | Посетители сайта: чтение, выполнение, запись, удаление Авторы: чтение, выполнение, запись, удаление Администраторы: чтение, выполнение, запись, удаление, изменение разрешений | Посетители сайта: чтение, запись, удаление. Авторы: чтение, запись, удаление. Администраторы: чтение, запись, удаление, изменение разрешений. |
Файлы содержимого | Посетители сайта: чтение Авторы: чтение, запись, удаление Администраторы: чтение, запись, удаление, изменение разрешений | |
Файлы в папке, содержащей результаты форм | Добавляет разрешения на запись для посетителей сайта в текущий список ACL |
Разрешения файлов сценариев
После создания папок для веб-содержимого установите разрешения для каждой папки. Ниже приведены рекомендуемые настройки разрешений NTFS для структуры папок:
static | Чтение | Полный | Полный |
include | Чтение | Полный | Полный |
content | Чтение | Полный | Полный |
live | Нет | Полный | Полный |
images | Чтение | Полный | Полный |
Разрешения на выполнение
Если сайт состоит только из статического содержимого, убедитесь в том, что в ниспадающем меню Execute Permissions (Разрешения на выполнение) выбран параметр None (Нет) в окне Default Web Site Properties (Свойства веб-узла по умолчанию). Для разрешения выполнения связанного со сценариями приложения (например, ASP) выберите параметр Scripts Only (Только сценарии). Не выбирайте опцию Scripts And Executables (Сценарии и исполняемые файлы), если на сервере не нужно выполнять исполняемые файлы.
Существует разница между разрешениями веб-сервера и разрешениями NTFS. Разрешения веб-сервера применимы ко всем пользователям, осуществляющим доступ к сайту.
Разрешения NTFS применяются только к определенному пользователю или группе пользователей с корректными учетными записями Windows, они определяют доступ к физическим каталогам на сервере; веб-разрешения управляют доступом к виртуальным каталогам на веб-сайте. Они применяются ко всем пользователям независимо от их прав доступа. Например, установка разрешения Read (Чтение) на виртуальный каталог позволяет его просматривать, если разрешения NTFS не налагают ограничения на этот просмотр.
По умолчанию учетная запись анонимного пользователя (IUSR_имя-компьютера) наделяется разрешениями NTFS для папок, из которых состоит веб-сайт. Если веб-разрешения и разрешения NTFS для каталога или файла отличаются, то используются параметры с большей степенью ограничения.
RequireSSL
Если значение параметра RequireSSL установлено на 1, серверные расширения потребуют соединение между клиентом FrontPage и сервером через протокол защищенных сокетов SSL.
0 | Да | Да | Нет |
RestrictIISUsersAndGroups
Если данный параметр установлен на ненулевое значение, то серверные расширения будут осуществлять поиск предопределенной группы Windows. Переменная RestrictIISUsersAndGroups не может быть установлена на уровне подсайта.
0 | Да | Да | Нет |
Резервные копии
В зависимости от используемого средства разработки проверьте, не засорена ли система файлами .bak. Такие средства, как Microsoft Visual InterDev и Allaire HomeSite, создают резервные копии содержимого в автоматическом режиме. Если разработчикам разрешено сохранение работы непосредственно на сервере (настоятельно не рекомендуется), резервные файлы с расширением .bak также будут сохраняться на сервере. Любой пользователь, открывший один из .bak-файлов, сможет прочесть весь текст сценария и просмотреть исходный код, так как IIS не будет обрабатывать страницу, и теги сценариев останутся нетронутыми. Поэтому убедитесь, что .bak-файлы удаляются каждый раз при завершении обновления файлов разработчиками, и свяжите их с машиной сценариев, чтобы обеспечить выполнение страниц и отправку клиенту только результатов этой работы.
Роботы и "пауки"
Веб-роботы, также называемые "пауками" или веб-странниками, – это программы, автоматически исследующие всемирную сеть через рекурсивное получение страниц по гиперссылкам. Робот посещает сайты посредством запросов документов с этих сайтов и создает базу данных, которая используется поисковой машиной для нахождения документов, соответствующих строке поиска. Если сайт открыт для общего доступа, пользователи должны иметь возможность поиска сайта с помощью поисковой системы. Тем не менее, следует запретить роботам доступ к страницам сайта, особенно к тем, которые содержат важную информацию, так как это может привлечь внимание хакеров. Большая часть веб-роботов содержит два механизма ограничения областей сайтов, которые они будут посещать: протокол исключений роботов Robots Exclusion Protocol и META-теги роботов, хотя некоторые роботы игнорируют обе директивы.
Серверные расширения FrontPage
Серверные расширения Microsoft FrontPage (FPSE) представляют собой набор программ, которые устанавливаются на сервере IIS для разработки и администрирования расширенных с помощью FrontPage сайтов, позволяя удаленным пользователям выполнять определенные задачи непосредственно на сервере. Фраза "непосредственно на сервере" является причиной того, что в лекции 3 не рекомендовалось устанавливать FPSE на защищаемом сервере, и этот совет по-прежнему остается в силе, так как компонент FPSE уже был предметом атак хакеров. Тем не менее, вам потребуется администрирование и разработка, обеспечиваемая FPSE при предоставлении услуг по веб-хостингу. Информация по установке FPSE находится в следующих разделах, ознакомьтесь с ней, чтобы разобраться в аспектах безопасности этого компонента и повысить его уровень защищенности.
Совместимость с приложением
Для вызова нужного интерфейса ISAPI или программы CGI при обработке определенных типов файлов их расширения связываются с соответствующими программами. При получении сервером адреса URL, обозначающего файл со связанным расширением, сервер вызовет связанную с файлом программу для обработки запроса. IIS изначально настроен на поддержку общих связей с приложениями. Для корректной работы сценариев нужно добавить или изменить связи между файловыми расширениями и программами/интерпретаторами, которые их обрабатывают. (Необходимость устранения любых ненужных связей обсуждалась в лекции 3 и лекции 10.)
Связи с приложением устанавливаются в стартовой точке приложения на вкладке App Mappings (Связь с приложениями) окна Application Configuration (Настройка приложения). Выполните следующие действия.
Откройте Internet Services Manager (Диспетчер служб интернета) и выберите веб-сайт или папку стартовой точки приложения.Откройте окно Properties (Свойства), щелкнув правой кнопкой мыши на объекте и выбрав команду Properties.Откройте вкладку Home Directory (Домашний каталог), Virtual Directory (Виртуальный каталог) или Directory (Каталог).Нажмите на кнопку Configuration (Настройка) для открытия окна Application Configuration (Настройка приложения) и откройте вкладку App Mappings (Связь с приложениями) (см. рис. 11.3). На рисунке 11.3 показано, что IIS вызовет программу Perl.exe для обработки любых запросов с файловыми расширениями .pl.Для добавления связи с приложением нажмите на кнопку Add (Добавить). Откроется диалоговое окно Add/Edit Application Extension Mapping (Добавить/Изменить связь приложения с расширением) (см. рис. 11.4).В поле Executable (Исполняемый файл) введите путь к нужной программе ISAPI или CGI (.exe или .dll). Она должна располагаться в локальном каталоге на веб-сервере.В поле Exstension (Расширение) введите файловое расширение для связи с программой, указанной в поле Executable (Исполняемый файл). В окне на рисунке 11.4 добавлен тип файлов .inc.
Рис. 11.3. Убедитесь в том, что установлены связи только с теми приложениями, которые используются IIS
Рис. 11.4. Обеспечьте выполнение кода, содержащегося в файлах вставки, перед отправкой клиенту, установив связь файлов .INC с ASP
Укажите команды, которые можно передавать приложению. Не выбирайте опцию All Verbs (Все команды), а добавьте только разрешенные команды в поле Limit To (Разрешить). Для ASP разрешите команды HTTP GET, HEAD и POST, указав их через запятую. Если все сценарии размещены в одной папке, не выбирайте опцию Script Engine (Машина сценариев). Эта опция требуется для выполнения приложений в папке без разрешений Execute (Выполнение), что существенно ослабляет контроль над разрешениями. Совет. Обратитесь к разделу "Инструмент безопасности URLScan" в этой лекции для получения подробной информации о том, какие команды необходимо разрешать для работы отдельных приложений.Отметьте опцию Check That File Exists (Проверить наличие этого файла), чтобы IIS проверял наличие запрошенного файла сценария и разрешение на доступ к нему. Если сценарий не существует, или пользователь не имеет соответствующего разрешения, то в браузере отобразится сообщение с предупреждением, и механизм обработки сценариев не запустится. Эта опция полезна для сценариев, связанных не с CGI-программами, а, например, с интерпретатором Perl, который не отправляет ответ CGI в случае недоступности файла сценария. Так как сценарий открывается дважды – сервером и машиной сценариев – произойдет некоторое снижение производительности.
Для удаления связи с приложением выберите расширение файла на вкладке App Mappings (Связь с приложениями) и нажмите на кнопку Remove (Удалить).
Средство безопасности URLScan
URLScan представляет собой средство безопасности, работающее вместе с программой IIS Lockdown (см. лекции 3) и обеспечивающее отключение ненужных функций и ограничение типов HTTP-запросов, обрабатываемых IIS. Как и фильтр ISAPI, программа URLScan выявляет все входящие на сервер запросы и фильтрует их согласно установленным правилам. Посредством фильтрации всех необычных запросов программа запрещает доступ к серверу IIS потенциально опасных запросов и обеспечивает обработку только корректных. Для получения информации о настройке URLScan, о командах HTTP, которые необходимо разрешить для работы отдельных приложений, посетите страницу www.microsoft.com/technet/security/URLScan.asp.
Стартовые точки приложения
В консоли Internet Services Manager (Диспетчер служб интернета) значок коробки (см. рис. 11.1) означает стартовую точку приложения с подкаталогами, являющимися частью приложения.
Веб-сайт по умолчанию, созданный при установке IIS, представляет собой стартовую точку приложения или корень приложения (см. рис. 11.2). Используйте Internet Services Manager (Диспетчер служб интернета) для назначения каталога стартовой точке приложения. Для этого откройте окно главных свойств, веб-свойств или свойств виртуального каталога щелчком правой кнопкой мыши на соответствующем объекте в ISM, затем выберите пункт Properties во всплывающем меню, затем – вкладку Home Directory (Домашний каталог). IIS поддерживает приложения ASP, ISAPI, CGI, IDC (Internet Database Connector) и SSI.
увеличить изображение
Рис. 11.1. Приложение evaluator является стартовой точкой веб-сайта
Рис. 11.2. Веб-сайт по умолчанию является стартовой точкой приложения
Структура папок для активного содержимого
В лекции 4 говорилось о настройке разрешений Windows NTFS для веб-сайтов, папок и отдельных файлов для контроля доступа пользователей к веб-содержимому. Вместо установки разрешений на каждый файл легче и безопаснее создать папки для файлов определенных типов, например, для статического содержимого или сценариев. Хорошо продуманная структура каталогов веб-сайта упрощает управление разрешениями веб-содержимого, так как они устанавливаются на уровне папки. Для стандартного веб-сайта создайте следующие папки (см. лекцию 3).
static | Статическое содержимое, сценарии клиентской части | .htm, .html, .js | D:\my_website\static |
include | Файлы вставок | .inc | D:\my_website\include |
content | Файлы сценариев | .asp | D:\my_website\content |
live | Исполняемые файлы | .exe, .dll, .cgi, .pl | D:\my_website\live |
images | Файлы изображений | .gif, .jpg | D:\my_website\images |
Такая структура сайта не обязательно является образцом для веб-дизайнеров, однако с точки зрения безопасности мы рекомендуем именно этот подход.
Важно. На разрабатываемом сервере используйте неинформативные имена папок со сценариями и исполняемыми файлами.
Сводный перечень действий по обеспечению безопасности активного содержимого
Создайте четкую структуру каталогов, чтобы упростить управление разрешениями на выполнение активного содержимого.Убедитесь, что веб-папкам присвоены минимальные разрешения NTFS, позволяющие просматривать содержимое определенным учетным записям.Свяжите активное содержимое с программой, которая будет его обрабатывать, включая файлы вставок.Используйте программы контроля над исходными файлами для управления изменениями, вносимыми в активное содержимое, и удаления ненужных резервных файлов, сгенерированных редакторами.Добавляйте в создаваемый код примечания об авторских правах.Осуществляйте проверку вводимых пользователем данных перед их обработкой или отображением.Реализуйте кодировку всего содержимого, исходящего от сторонних источников, – от баз данных и вводящих информацию пользователей.Убедитесь в том, что весь код проходит процедуру проверки, состоящую из девяти пунктов.Настройте и используйте на сайте фильтры ISAPI для защиты собственного кода.Используйте кодировщик сценариев Script Encoder для скрытия сценариев на веб-страницах.Управляйте доступом к важной информации с использованием ASP, HTTP 401 и EFS.Проводите тщательную отладку всех сценариев и исполняемых файлов перед их установкой на защищаемом сервере.Реализуйте перехват ошибок для всех сценариев, чтобы предотвратить утечку информации о системе через веб-браузер, но фиксировать ее в файлах журналов.Подписывайте код апплетов и макросов, которые понадобятся посетителям при доступе к сайту.Не используйте без надобности серверные расширения FrontPage Server Extensions.Настройте переменные FPSE для повышения уровня безопасности по сравнению с конфигурацией по умолчанию.Используйте протокол исключения роботов Robot Exclusion Protocol или META-теги роботов для запрета индексирования роботами важного содержимого.
Технологии активного содержимого
CGI, ASP и Perl являются самыми распространенными технологиями, используемыми в IIS для обеспечения активного содержимогох. ASP (Активные страницы сервера) является технологией серверной части, разработанной Microsoft, которая позволяет комбинировать HTML, сценарии и компоненты многоразового пользования ActiveX или COM для создания динамических веб-страниц. Решение о создании генерируемого сервером содержимого в IIS принимается веб-разработчиками. Давайте рассмотрим создание ASP с помощью CGI.
Удаление FPSE
Можно временно или постоянно удалить FrontPage 2002 Server Extensions с сервера IIS. Для временного удаления расширения используйте команду uninstall. В этом случае данные о сайте будут сохранены, и можно будет заново расширить виртуальный сервер и вернуться к исходной конфигурации. Для постоянного удаления расширения выполните команду fulluninstall, которая удалит все файлы компонента, кроме непосредственного содержимого сайта. Ниже приведен пример такой команды:
Owsadm.exe –o fulluninstall –p <port>
Для временной деинсталляции FrontPage 2002 Server Extensions введите следующую команду в командной строке, заменив <port> номером порта указанного виртуального сервера:
Owsadm.exe –o uninstall –p <port>
Управление FPSE
Всегда используйте последнюю версию FPSE (это версия 2002), показанную на рис. 11.14 в окне Properties (Свойства) сервера. Расширения можно загрузить из раздела FrontPage сайта MSDN по адресу http://msdn.microsoft.com/library/default.asp?url/library/en-us/dnservext/html/fpse02win.asp. Пакет FrontPage Server Extensions Resource Kit доступен по адресу http://office.microsoft.com/Assistance/2000/FPserk.aspx; в нем имеются полезные сведения по использованию FPSE.
После установки FPSE 2002 можно использовать страницы HTML Administration или командую строку для администрирования веб-сайтов и сервера. Администрирование расширений FrontPage 2000 Server Extensions раньше осуществлялось при помощи Microsoft Management Console (MMC), а теперь эта возможность недоступна. Так как формы HTML позволяют осуществлять удаленное администрирование, они должны быть удалены. По умолчанию эти формы устанавливаются в каталог C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\50\admisapi\1033 наряду с другими утилитами командной строки, используемыми для администрирования FPSE.
Рис. 11.14. Компонент FrontPage 2002 Server Extensions добавляет собственную вкладку в окна главных свойств, свойств сайта и свойств виртуального каталога
Для удаленного администрирования обеспечьте следующие меры предосторожности.
Обязательное SSL-соединение.Предоставление доступа к библиотеке fpadmdll.dll и формам HTML только доверенным администраторам.Обязательное использование нестандартного HTTP-порта.Использование ограничений маски IP-адресов для предотвращения несанкционированного доступа к формам администрирования HTML.
С этим программным пакетом устанавливаются две утилиты командной строки – owsadm.exe и owsrmadm.exe. Утилита Owsrmadm.exe позволяет осуществлять администрирование с удаленного компьютера и должна быть удалена, если в этом нет необходимости. Утилиты командной строки обеспечивают больший набор возможностей, нежели страницы администрирования HTML.
Утилиты командной строки применяются для выполнения следующих задач.
Управление пользователями и ролями.Обнаружение потенциальных проблем с установленным компонентом серверных расширений и их устранение.Добавление, удаление или слияние вложенных веб-сайтов.Сканирование веб-сайта для генерирования свежих отчетов о веб-содержимом.Обновление до новой версии серверных расширений.Деинсталляция серверных расширений для определенного веб-сайта.Настройка параметров для веб-страницы, корневой веб-страницы или для всех веб-сайтов сервера.
Вам пригодятся также две полезные команды Disable и DatabaseConnection. Команда Disable предназначена для отключения разработки и администрирования из клиента FrontPage после внесения каких-либо изменений, а также для их повторного включения при внесении изменений в содержимое. Команда DatabaseConnection предназначена для проверки информации о подключении к базе данных, для шифрования имени и пароля учетной записи перед их сохранением. Более подробная информация об администрировании из командной строки доступна в руководстве администратора по адресу http://www.microsoft.com/technet/treeview/default.asp?url=/technet/prodtechno/sharepnt/proddocs/admindoc/ows000.asp.
Управление исходными файлами
Для предотвращения случайного изменения файлов веб-разработчиками необходимо контролировать исходные файлы. Например, если файл вставки удален или перемещен без страниц, которые обновлялись с использованием этого файла, то при доступе к этим страницам возникнет ошибка, и откроется доступ к информации о системе.
Контролируя доступ на запись веб-содержимого, управление исходными файлами исключает единовременное редактирование одного и того же файла двумя пользователями, а также удаление и перемещение файлов без связанных с ними обновляющихся файлов. Это важно, когда команда разработчиков работает над одним и тем же приложением, так как в любой момент времени используется самая последняя версия файла. Программа контроля изменений упрощает обновление файлов, автоматизирует утомительный, но обязательный процесс включения и выключения атрибута "только для чтения" вручную.
Веб-сайты с установленными расширениями FrontPage
Расширенный при помощи FrontPage Extensions сайт содержит веб-страницы, рисунки и другие файлы и документы. Пользователям могут быть присвоены роли для управления или обновления расширенного веб-сайта. Ранее управление ролями пользователей для FPSE осуществлялось из клиента FrontPage с помощью команды Security (Безопасность) в меню Tools (Сервис). При помощи расширений 2002 Extensions осуществляется управление ролями с использованием средства администрирования командной строки или с помощью страниц администрирования HTML. По умолчанию устанавливаются следующие роли.
По умолчанию устанавливаются следующие роли.
Веб-браузер. Права для просмотра страниц, просмотра обсуждений веб-документов и чтения списков.Автор. Права обозревателя, права редактирования страниц, папок и списков.Главный автор. Права автора, права для определения и применения тем и границ, таблиц стилей ссылок и права на повторную калькуляцию веб-сайта.Администратор. Все права остальных ролей, права на изменение ролей, создание локальных учетных записей пользователей, контроль за исходными файлами, создание веб-сайтов, обсуждение веб-документов и подписок, управление параметрами сервера и анализ использования.
Защита авторских прав
Иногда в интернете попадаются сайты с предупреждениями о том, что копирование содержимого сайта запрещено. Часто для защиты авторских прав используются скрываемые панели инструментов веб-браузера и панели инструментов перехода, а также сценарии JavaScript, отключающие всплывающие меню. Тем не менее, для опытных пользователей эти методы защиты авторских прав являются не только раздражающими, но и легко преодолимыми при помощи целого ряда способов.
Совет. Если вы добавляете в свой код уведомление об авторских правах, то в любом судебном процессе это облегчит доказательство того, что результат вашего труда был скопирован нелегально. Для получения дополнительной информации обратитесь к разделу "Кодировщик сценариев" далее в этой лекции.
Следует всегда добавлять строку уведомления об авторских правах внизу каждой веб-страницы. Например, "© 2002, ваше_имя/компания. Все права защищены". Эту строку можно добавить, выбрав опцию Enable Document Footer (Включить нижний колонтитул документа) на вкладке Documents (Документы) окна Properties (Свойства) веб-сайта (см. рис. 11.7). IIS будет автоматически прилагать нижний колонтитул ко всем отправляемым страницам, хотя это несколько снизит производительность.
Рис. 11.7. Введите полный путь к файлу нижнего колонтитула или нажмите на кнопку Browse (Обзор) и найдите его в дереве каталогов
Совет. Следует регистрировать авторские права для имен доменов, связанных с сайтом; зарегистрировать сайт целиком можно в офисе авторских прав США по адресу http://lcweb.loc.gov/copyright/.
Защита кода собственной разработки с помощью фильтра ISAPI
Большая часть сценариев JavaScript включается в веб-страницы или содержится в файле JavaScript (.js), и код сценариев доступен каждому пользователю, который просматривает исходный код файла. Как правило, это не представляет серьезной проблемы, однако что делать, если вы разработали свои собственные сценарии JavaScript, которые не должны быть доступны для просмотра? В этом случае следует использовать фильтр ISAPI.
Отслеживая уведомления OnUrlMap, фильтр ISAPI обеспечивает тот факт, что сценарий JavaScript серверной части будет доступен для чтения только серверу IIS. Когда IIS сопоставит логический путь устройства с физическим путем, произойдет вызов уведомления OnURLMap, что позволит фильтру ISAPI определить, кто осуществляет попытку чтения файла JavaScript. Если кто-либо попытается получить непосредственный доступ к файлу, фильтр заблокирует запрос, в то время как запрос на просмотр HTML-страницы, связанной со сценарием JavaScript, обработается в обычном порядке, так как он отправлен сервером IIS. Пример такого фильтра расположен на странице http://www.15seconds.com/issue/010104.htm. Этот метод обеспечивает доступ IIS только к файлам, содержащим системные пароли доступа к ресурсам, например, к базам данных. Следует избегать непосредственного указания паролей в общих сценариях.
Важно. Никогда не включайте системные пароли в сценарии. В этом случае пароли будут доступны для чтения любому разработчику и выявлены при нарушении безопасности сайта.