Хакеры и вирусы на AS/400? Это невозможно. Они пиратствуют только на Unix и ПК.
Я вспоминаю фильм «Парк юрского периода», в конце которого девочка подходит к компьютеру, на котором была совершена диверсия, приведшая к выходу динозавров на свободу. «Это Unix!» — восклицает она, вскрывает его защиту и немедленно устраняет неполадки. Тут я сказал про себя: «Конечно, чего же Вы хотели от Unix». А в фильме «День независимости» вирус был запущен в компьютер космического корабля пришельцев. Большинство зрителей до этого и не подозревали, что инопланетяне используют компьютеры Apple Macintosh. Но, слава Богу, это оказалось именно так, вирус сработал, и наш мир был спасен.
Вообще, в фильмах часто злодеи проникают в чужие компьютеры, или недовольный сотрудник внедряет вирус в компьютерную сеть фирмы. Приятно сознавать, что ничего подобного на AS/400 произойти не может. Или все-таки может?
Как и многие другие функции, в AS/400, в отличие от большинства иных систем, защита была встроена с самого начала, а не добавлена уже после создания,. Однако никакие средства защиты не помогут, если их не использовать, а многие пользователи AS/400 так и делают. Например, в среде клиент/сервер необходимо принимать специальные меры для защиты данных AS/400 от незащищенных клиентов, таких как Windows 95 и Windows NT. Более того, в современном сетевом мире многие AS/400 подключены к Интернету, в этом случае также следует применять определенные средства защиты информационных ресурсов. По счастью, интегрированные средства защиты AS/400 обеспечивают крепкий фундамент безопасности всей системы. В этой главе мы рассмотрим средства защиты AS/400 и обсудим, как лучше использовать их.
В прошлом защитить вычислительную систему было относительно легко. Обычно, было достаточно вставить замок в дверь машинного зала и заставить конечных пользователей вводить при входе в систему пароль. Современный мир уже не так прост. Наибольшей степени опасности подвергаются AS/400, включенные в вычислительную сеть: во внутрифирменную ЛВС или в глобальную сеть, например в Интернет. В любом случае, AS/400 предоставляет средства для минимизации или полного устранения риска несанкционированного доступа. Проблемы защиты вычислительной системы очень похожи на те, что возникают при защите дома или автомобиля: Вы должны правильно рассчитать соотношение цены и допустимой степени риска.
Очевидно, что в разных ситуациях AS/400 нужен разный уровень защиты. У пользователя должна быть возможность самостоятельного выбрать этот уровень. Хорошая система защиты разработана так, чтобы компьютер мог работать вообще без защиты, с ограниченной защитой или с полной защитой, но во всех случаях система защиты должна быть активна.
И сейчас есть системы, запертые в помещениях, куда доступ строго ограничен. Понятно, что им не нужен такой уровень защиты, как компьютеру, подключенному к
Интернету. Но с течением времени требования к защите и этих систем могут повыситься. Интегрированная защита AS/400 достаточно гибка, чтобы перестроиться по мере изменения требований к ней.
Защита AS/400 представляет собой комбинацию средств защиты в OS/400 и в SLIC. В OS/400 реализованы уровни общесистемной защиты, при этом OS/400 полагается на функции защиты объектов на уровне MI. Например, как упоминалось в главе 5, MI выполняет проверку прав доступа при каждом обращении к объекту. За действия MI по защите объектов ответственен SLIC. Реализуемый им тип защиты называется авторизацией и предназначен для предохранения объекта от несанкционированного доступа или изменения.
Некоторые компоненты защиты AS/400 расположены полностью поверх MI в OS/400, например, задание системных параметров защиты. Другие, такие как контроль за доступом к объектам, полностью реализованы ниже MI в SLIC. Третьи компоненты защиты реализованы частично над, а частично под MI. Пример — поддержка привилегированных команд и специальных прав доступа. Давайте подробнее рассмотрим компоненты, лежащие и выше и ниже MI.
AS/400 предназначены для широкого применения в различных областях человеческой деятельности. Соответственно, и требования к их защищенности варьируются от уровня ее полного отсутствия до уровня защиты, сертифицированной правительством. Задавая соответствующие системные параметры, можно выбрать одну из пяти степеней: отсутствие защиты, парольная защита, защита ресурсов, защита ОС и сертифицированная защита. При конфигурировании AS/400 должны быть заданы четыре системных параметра, относящихся к защите: QAUDJRL, QMAXSIGN, QRETSVRSEC и QSECURITY.
Системным параметром, определяющим уровень защиты, является QSECURITY. В System/38 и первых AS/400 было только три уровня системной защиты, в версии V1R3 OS/400 к ним добавился четвертый, а в V2R3 — пятый, высший уровень защиты. Допустимые значения QSECURITY — 10, 20, 30, 40 и 50.
AS/400 поддерживает также дополнительную функцию аудита. Если эта функция задействована, то определенные события, связанные с защитой, заносятся в журнал., То, какие конкретно события протоколировать в журнале аудита защиты, определяет значение системного параметра QAUDJRL и текущий уровень защиты. Могут протоколироваться такие события, как попытки несанкционированного доступа, удаление объектов, идентификация программ, использующих привилегированные команды и др. Содержимое журнала защиты анализирует администратор защиты.
Максимальное количество неудачных попыток входа в систему задает системный параметр QMAXSIGN. Если число таких попыток превысит значение этого параметра, то терминал или устройство, с которого они были предприняты, отключаются от системы и связь между ними и системой разрывается. Такой метод позволяет предотвратить попытки подобрать пароль для входа в систему. Значение параметра QMAXSIGN для каждого устройства сбрасывается после успешного входа в систему.
Системный параметр QRETSVRSEC (Retain Server Security Data) определяет, может ли информация, необходимая AS/400 для аутентификации пользователя на другой системе через интерфейсы клиент/сервер, запоминаться сервером. Если информация запоминается, то сервер ее использует. Если нет, то сервер будет запрашивать идентификатор и пароль пользователя для другой системы. Системный параметр QRETSVRSEC используется для клиент/серверных интерфейсов TCP/IP, Novell NetWare и Lotus Notes.
Теперь давайте рассмотрим каждый из пяти уровней защиты, начиная с самого низкого.
Уровень 10 означает самую низкую степень защищенности — отсутствие таковой. Для доступа к системе не требуется пароля и любому пользователю разрешен доступ ко всем системным ресурсам и объектам без ограничений. Единственное условие — нельзя влиять на задания других пользователей системы.
Системный уровень защиты 10 обычно применяется тогда, когда достаточно только физической защиты системы, например, замка на двери машинного зала. Любой пользователь, имеющий физический доступ к машине, может войти в систему. При этом он не обязан регистрироваться. Регистрация пользователя предполагает наличие где-либо в системе профиля пользователя. Такой профиль при использовании уровня защиты 10 создается автоматически, если еще не существует.
Если Вам нужна только защита при входе в систему, используйте уровень 20. При этой степени защиты требуется, чтобы пользователь AS/400 был зарегистрирован и знал правильный пароль. После того, как разрешение на вход в систему получено, пользователь имеет доступ ко всем ее ресурсам без ограничений. Как видите отличие от уровня 10 незначительно.
Только в одном особом случае доступ пользователя к системе при уровне 20 ограничивается: если в профиле пользователя это специально оговорено. Пользователь с ограниченными возможностями может только выбирать пункты меню. Большинство системных меню имеют строку ввода команд, и упомянутое средство ограничивает использование системных команд.
Предположим, что в организации есть группа работников, в чьи обязанности входит прием заказов на товары и ввод соответствующих данных в систему. Для таких пользователей целесообразно создать специальное меню и разрешить им действовать только в этих рамках, для чего их следует зарегистрировать как пользователей с ограниченными возможностями и задать в их профилях меню, доступ к которому им разрешен.
Но даже пользователю с ограниченными возможностями разрешено исполнять четыре необходимых команды: для отправки сообщений, для отображения сообщений, для отображения состояния задания и для выхода из системы. То, какие именно команды открыты для пользователя с ограниченными возможностями, можно задать индивидуально. Ограничение возможностей также определяет, какие поля пользователь может изменять при входе в систему.
Уровни 20 и 10, не обеспечивают системе защищенность, так как после регистрации пользователя в системе, он может производить там любые операции. Я бы не рекомендовал ограничиваться столь низкими степенями защиты за исключением особых случаев, когда сама система практически недоступна извне.
Минимальным рекомендуемым уровнем защиты является уровень 30. На этом уровне, так же как и на уровне 20, для входа в систему пользователь должен быть зарегистрирован и знать правильный пароль. После входа в систему проверяется, обладает ли пользователь правами доступа к системным ресурсам; несанкционированный доступ не разрешается. На уровне 30 пользователь также может быть зарегистрирован с ограниченными возможностями.
Отдельным пользователям могут быть предоставлены права доступа к системным объектам, таким как файлы, программы и устройства. Обеспечивают такую возможность профили пользователя, и вскоре мы поговорим подробнее о том, каким образом они это делают. Мы также рассмотрим другие варианты наделения пользователя правами доступа к системным объектам: с помощью групповых или общих прав.
Уровень защиты 30 был наивысшим в System/38. Но на нем не различаются пользовательские объекты и объекты, используемые только ОС. В связи с доступностью на System/38 ассемблера MI и наличия определенной информации о внутренней структуре объектов возникла серьезная проблема. ISV стали писать прикладные пакеты, зависящие от внутренней структуры объектов, что нарушало технологическую независимость MI.
В первых моделях AS/400 использовались те же самые уровни защиты. Хотя в AS/ 400 не было ассемблера MI, и мы не публиковали информацию о внутренних структурах, специалисты довольно скоро поняли, что AS/400 — это System/38. Поэтому программы, зависимые от внутренней структуры объектов, работали и на AS/400.
Мы понимали, что при переходе к клиент/серверным вычислениям, AS/400 нужна более надежная защита, блокирующая доступ к большинству внутренних объектов. В связи с переходом на RISC-процессоры изменениям подверглась и внутренняя структура. Но если бы мы просто реализовали новый, повышенный, уровень зашиты, то программы, зависимые от внутренней структуры объектов, перестали бы работать, что вызвало бы недовольство заказчиков.
Мы объявили о том, что собираемся встроить в V1R3 новый уровень защиты, и что на этом уровне доступа к внутренним объектам не будет. Мы также начали искать тех ISV, кто использовал внутренние объекты, чтобы предоставить им стандартные системные API, с информацией, необходимой для их программ.
Большая часть таких программ были утилитами, использовавшими информацию некоторых полей внутри системного объекта. Например, системе управления магнитной лентой могли понадобиться некоторые данные о заголовке ленты. Такую информацию можно было получить единственным способом — проникнув в системный объект. Мы создали сотни API для предоставления подобной информации через MI (по сути дела, эти API были новыми командами MI) и гарантировали, что они будут работать во всех последующих версиях ОС. Таким образом мы развязали себе руки и начали вносить изменения во внутренние структуры.
С защитой связана еще одна серьезная тема: тема открытости AS/400. Довольно долго многие ISV не только использовали внутренние объекты, но и настаивали, чтобы IBM сделала внутреннее устройство ОС открытым и дала тем самым «зеленый свет» разработчикам ПО. В ответ IBM утверждала, что при неправильном использовании команд MI велика вероятность программных сбоев, за которые она не может нести ответственность. Компромисс (управляемая открытость через API) был достигнут, частично в результате серии заседаний группы COMMON, начатых по инициативе ISV и других пользователей. Работу с ISV и определение новых API возглавил Рон Фесс (Ron Fess) — один из основных разработчиков ПО с большим опытом работ по CPF и OS/400. Результат это работы — реализация на AS/400 Single UNIX Specification и других стандартных API. AS/400 стала более открытой для пользователей.
Уровень 40 появился в версии V1R3 OS/400. Сегодня все новые AS/400 поставляются именно с этим уровнем защиты, а не 10, как ранее. Но старые версии OS/400 и при модернизации сохраняют текущий уровень, установленный заказчиком. Теперь пароль начальника защиты (пользователь, обладающий правами доступа наивысшего уровня) становится недействительным после первого ввода в систему и он должен его изменить. Ранее заказчики AS/400 часто не утруждали себя изменением пароля, установленного в системе по умолчанию, что создавало явную «дыру» в защите.
При уровне 40 пользователь AS/400 также должен быть зарегистрирован, должен знать правильный пароль для входа в систему и иметь права на доступ к системным ресурсам. Впрочем, пользователи с ограниченными возможностями при этом уровне защиты тоже поддерживаются.
В отличие от уровней 10 — 30, при уровне защиты 40 доступ к нестандартным интерфейсам блокирован. Пользователю теперь доступны далеко не все команды MI, а лишь их разрешенный набор, включая сотни API, разработанных для ISV. Остальные же команды блокированы, то есть система не будет исполнять их в пользовательской программе.
Тем не менее, команды из блокированного набора по-прежнему доступны OS/400. Для различия программ OS/400 и пользовательских, были введены понятия системного и пользовательского состояния, к которым можно отнести любой процесс на AS/ 400. Использование заблокированных команд и доступ, таким образом, к некоторым объектам системы разрешены только в системном состоянии.
Для большей надежности защиты в V1R3 была также устранена адресация на базе возможностей, а из системных указателей, предоставляемых пользователям, убраны все права доступа.
Уровень 40 обеспечивает системе достаточную степень защищенности в большинстве случаев. Однако, некоторым фирмам, выполняющим государственные заказы, необходим уровень защиты, сертифицированный правительством США. Таких сертификатов несколько, включая, так называемый, уровень С2. Они включают такие положения, как защита ресурсов пользователя от других пользователей и предотвращение захвата одним пользователем всех системных ресурсов, например, памяти. Кстати, подобные требования сейчас применяются и во многих неправительственных организациях.
Для заказчиков, нуждающихся в правительственных сертификатах, мы дополнили уровень защиты 40 на AS/400 до соответствия упомянутому уровню С2. Так в версии V2R3 появилась защита уровня 50.
Но прежде чем система будет признана соответствующей стандарту С2, она должна пройти всеобъемлющую проверку. В настоящее время такая проверка идет.
Уровень 50 включает все возможности защиты уровня 40, хотя некоторые интерфейсы были изменены под государственный стандарт. Кроме того, добавлена возможность аудита.
Министерство обороны США определяет уровень защиты класса С2, как обеспечивающий «селективную защиту и, путем включения возможностей аудита, ответственность субъектов за их действия»[ 56 ]. Иначе говоря, при этом уровне защиты владелец ресурса вычислительной системы должен иметь право решать, кому предоставить доступ к данному ресурсу. Нужно также, чтобы система «помнила», кто и когда обращался к ресурсу. Средства аудита, задаваемые системным параметром QAUDJRL, позволяют администратору анализировать собранную информацию.
Правительством США определены уровни защиты от А до D, где А — наивысший уровень защиты, а D — самый низкий. Классы B и С имеют несколько подуровней. Уровень защиты С2 — уровень, наивысший из обычно используемых в бизнесе.
В будущем, если возникнет такая необходимость, мы сможем включить в AS/400 поддержку и более высоких уровней защиты.
Профиль пользователя это и объект OS/400, и системный объект MI, служащий для идентификации пользователя в системе. Профиль должен быть у каждого пользователя, хотя и не обязательно уникальный: как мы скоро увидим, профили могут быть разделяемыми. Даже при отключенной защите (уровень 10), если у пользователя нет профиля, то система его создаст. Профили пользователя содержат информацию относящуюся к защите, они применяются и компонентами защиты OS/400, и компонентами контроля за доступом SLIC. Упомянутые компоненты управляют использованием объектов, ресурсов, некоторых команд и атрибутов машины. Профиль пользователя определяет следующие параметры:
класс пользователя — категорию, в зависимости от принадлежности к которой пользователь имеет особые права;
принадлежащие и доступные объекты — список объектов, которыми пользователь владеет и к которым имеет доступ;
права на объекты — права доступа к объектам из вышеуказанного списка;
привилегированные команды и специальные права — информация о всех привилегированных командах и специальных правах пользователя;
пароль — код, обязательный для входа в систему при всех уровнях защиты, кроме 10;
текущая библиотека — место, куда по умолчанию помещается новый объект, созданный пользователем;
начальная программа и меню — поле, задающее программу и меню, активизируемые сразу после входа пользователя в систему;
ограничение возможностей — параметр, запрещающий пользователю ввод команд и ограничивающий его возможности выбором пунктов меню;
ограничение сессий для устройства — параметр, ограничивающий устройство пользователя одной сессией;
максимальный объем памяти — поле, задающее общий объем дискового пространства для объектов, которыми владеет пользователь;
максимальный приоритет — поле, задающее максимальный приоритет планировщика, который может применяться пользователем (более подробно будет обсуждаться в главе 9);
специальная среда — поле, задающее среду, в которой будет работать пользователь (например, System/36).
Назначение большинства приведенных атрибутов очевидно, но первые четыре требуют некоторых пояснений.
Какой именно уровень доступа к системе разрешен пользователю, определяют пять классов пользователей. От класса зависит, какие функции пользователь может выполнять, какие пункты меню и привилегированные команды ему доступны. Перечислим все пять классов, начиная с максимального уровня доступа:
начальник защиты — наивысший уровень пользователя системы; его обладатель выполняет все операции, связанные с защитой, включая разграничение других пользователей на классы;
администратор защиты отвечает за регистрацию пользователей и защиту системных ресурсов;
системный программист разрабатывает приложения для системы;
системный оператор выполняет функции обслуживания системы, например резервное копирование;
пользователь рабочей станции — пользователь прикладных программ, имеющий минимальный доступ к системе.
В новой AS/400 для каждого класса пользователей имеется по одному профилю. Заказчик сам решает, кто в его организации будет отвечать за каждой из участков работы. Очевидно, что один и тот же человек может совмещать несколько обязанностей.
Профиль пользователя содержит два списка. Первый — список всех объектов, которыми владеет данный пользователь, а второй — список объектов, к которым он имеет доступ. Владелец объекта — это пользователь, создавший его. Если профиль пользователя — член профиля группы (подробно будет обсуждаться далее), то в профиле может быть задано, что все созданные пользователем объекты принадлежат группе. Право владения объектом может передаваться. Владелец объекта или любой пользователь, имеющий права на управление этим объектом, может назначать явные (private) права доступа к объекту, а также установить общие (public) права на объект. В профиле пользователя перечислены только принадлежащие ему объекты и объекты со специальными правами.
К каждому объекту AS/400 может быть предоставлено восемь видов доступа, а именно:
•право на оперирование объектом разрешает просматривать описание объекта и использовать объект соответственно имеющимся у пользователя правам[ 57 ];
право на управление объектом разрешает определять защиту объекта, перемещать или переименовывать его, а также добавлять (но не удалять!) разделы в файлы баз данных;
право определять существование объекта разрешает удалять объект, освобождать его память, выполнять операции сохранения/восстановления и передавать право на владение объектом;
право на управление списком прав разрешает добавлять, удалять и изменять права пользователей в списках прав к объекту;
право на чтение разрешает доступ к объекту;
право на добавление разрешает добавлять записи к объекту;
право на удаление разрешает удалять записи из объекта;
право на обновление разрешает изменять записи объекта.
Эти восемь прав объединены OS/400 в четыре комбинации, чтобы их было легче применять. Конечные пользователи могут использовать и другие сочетания, но большинство все же предпочитает следующие стандартные комбинации:
«все» (all) — объединяет все восемь прав;
«изменение» (change) — объединяет права на оперирование объектом, чтение, добавление, удаление и обновление;
«использование» (use) — объединяет права на оперирование объектом и чтение;
«исключение» (exclude) — не дает никаких прав на использование объекта; перекрывает наличие общих или групповых в связи с порядком проверки прав доступа (рассматривается далее).
Каждый профиль пользователя содержит информацию о привилегированных командах и специальных правах пользователя. Некоторые привилегированные команды MI могут выполняться только теми пользователями, профили которых разрешают это делать. Например, профиль для начальника защиты создается с возможностью исполнять команду «PWRDWNSYS» (Power Down System), останавливающую работу машины. По очевидным причинам эта привилегированная команда не доступна обычным пользователям. Также есть набор специальных прав, которые могут быть предоставлены лишь избранным пользователям. Эти специальные права связаны с такими операциями, как подвешивание объектов, управление процессами, выполнение операций загрузки/дампа и использование низкоуровневых сервисных средств.
Хотя все привилегированные команды и специальные атрибуты могут быть заданы в профиле пользователя по отдельности, OS/400 объединяет команды и права в шесть групп специальных прав:
«все объекты» — разрешает доступ к любому системному ресурсу, независимо от того, оговорены ли особо права пользователя на такой доступ;
«администратор защиты» — разрешает создание и изменение профилей пользователя;
«сохранение системы» — разрешает сохранять, восстанавливать и освобождать память для любого объекта в системе, независимо от того, имеет ли пользователь право определять существование этого объекта;
«управление заданиями» — разрешает изменять, отображать, задерживать, возобновлять, отменять и удалять все задания, которые исполняются в системе, а также находятся в очередях заданий или в выходных очередях;
« обслуживание» — разрешает выполнять сервисные операции отображения/изменения/дампа.
«управление спулом» — разрешает удалять, отображать, задерживать и отпускать спул-файлы, владельцами которых являются другие пользователи.
Профиль пользователя — это сердце системы защиты AS/400. Он управляет доступом практически ко всем ресурсам системы. Но даже если профиль пользователя не дает последнему прав на некоторый объект или ресурс системы, такие права можно получить иными способами. Далее мы рассмотрим два способа получения дополнительных прав: заимствование прав программой и права группы.
Во время исполнения программы профиль пользователя — владельца программы может служить дополнительным источником прав. Возможность заимствования прав позволяет программе выполнять операции, требующие полномочий, которыми пользователь непосредственно не обладает. Вместо того, чтобы предоставлять дополнительные права пользователю, пользовательская прикладная программа вызывает другую программу, владелец которой имеет соответствующие права. Таким образом, заимствование прав программой требует использования концепции стека вызовов. Такое заимствование всегда аддитивно и никогда не уменьшает прав доступа. Заимствование — атрибут программы, задаваемый при ее создании. Если вызываемая программа допускает заимствование прав, то любая вызывающая программа может использовать права владельца во время выполнения вызываемой программы. Программы, работающие в системном состоянии, могут сами задать запрет на заимствование. Программа может также запретить дальнейшее распространение прав. Это означает, что вызывающая программа будет заимствовать права, но эти права не сохранятся для программ, расположенных дальше по цепи вызовов.
Ранее мы рассматривали только случаи, когда один пользователь имеет права на один объект. Однако, иногда нужно предоставить одинаковые права группе пользователей, или права на группу объектов.
На AS/400 есть три метода группирования прав. Списки прав и профили групп упрощают администрирование защиты, устраняют необходимость индивидуального подхода к пользователям или объектам. Держатели прав (authority holders) были введены IBM еще в среде System/36.
Список прав позволяет назначать права на множество объектов нескольким пользователям. Кроме того, каждый пользователь может иметь различные права доступа ко всем объектам в списке. Список прав с тремя пользователями и тремя объектами показан на рисунке 7.1. Каждый из трех пользователей имеет права на все три объекта в списке; но во всех случаях — разные. Для добавления, удаления или изменения пользователей и их прав в списке требуется право на управление списком прав, описанное выше. На уровне MI список прав реализован как системный объект.
Профили групп дают пользователям возможность применять общий профиль в дополнение к своим собственным. Пользователи — члены группы (например, сотрудники отдела предприятия) могут работать с общими объектами. Управление правами доступа всех членов группы может выполняться посредством профиля группы.
Рисунок 7.1. Пример списка прав
Доступ к профилю группы осуществляется через профили отдельных пользователей. Если профиль пользователя дает ему права на объект, то эти явные права переопределяют права группы. Это позволяет предоставлять отдельным членам группы меньшие или большие права по сравнению с остальными.
Профиль пользователя может быть членом до 16 профилей групп. Одна из таких групп может быть назначена первичной, что позволяет ускорить алгоритм поиска прав. Право первичной группы на объект хранится в самом объекте, тогда как права других групп — в профилях этих групп. При использовании первичной группы производительность повышена, так как алгоритму поиска не приходится обращаться к профилю группы — достаточно лишь информации в объекте.
Приложения System/36 могут предоставлять пользователям заранее заданные права на еще несуществующие, не созданные файлы. Приложение System/36 может даже продолжать обладать правами на удаленный файл. В System/38 такой возможности нет. Права не могут быть предоставлены, пока объект не создан, а при удалении объекта вся информация о правах на него также удаляется из системы.
Для поддержки прав доступа к несуществующим файлам в среде System/36 на AS/ 400 были добавлены держатели прав, нужные только для миграции. Их использование ограничено несколькими типами программно-описанных файлов; для других типов файлов и объектов держатели прав не поддерживаются. В связи с этим, ни в MI, ни в OS/400 нет объекта типа «держатель прав».
Теперь, когда мы определили все типы прав и различные способы, которыми пользователь может их получить, рассмотрим алгоритм поиска и попытаемся понять, как фактически происходит предоставление прав.
Поиск прав всегда осуществляется в строго определенном порядке, что дает возможность регулировать объем прав пользователя по сравнению общими правами, правами профиля группы или правами списка прав.
Алгоритм поиска прав выполняется SLIC при первом обращении пользователя к объекту. Это часть операции разрешения указателя, рассмотренной в главе 5. Работа алгоритма останавливается при обнаружении запрошенных прав на объект. Если информации о правах не найдено, доступ не предоставляется.
Рисунок 7.2. Алгоритм поиска прав
Последовательность алгоритма поиска запрошенных прав показана на рисунке 7.2.
Предположим, что мы запрашиваем право на изменение (change) для некоторого объекта в системе. Порядок поиска таков[ 58 ]:
1.В индивидуальном профиле пользователя ведется поиск:
специального права на все объекты, или
права на объект (владельца и явного), или
права из списка, если объект присутствует в этом списке (явного права).
Доступ к объекту разрешен, если данный пользователь имеет специальное право на все объекты или, по крайней мере, право на изменение (change) для объекта в профиле пользователя (право владельца или явное право на объект) или в списке прав. Если найденное право меньше, чем право на изменение (change) — например, «использование» (use) или «исключение» (exclude), — то алгоритм переходит к поиску заимствованного права. Если право не обнаружено, то проверяются профили групп.
2.В профиле группы ведется поиск:
специального права на все объекты, или
права первичной группы, или
права на объект для других групп (явного права), или
права из списка, если объект присутствует в этом списке (явного права).
Доступ к объекту разрешен, если группа имеет специальное право на все объекты или, по крайней мере, право на изменение (change) для объекта в первичной группе, других группах или в списке прав. Если найденное право меньше, чем право на изменение (change) — например, «использование» (use) или «исключение» (exclude), — то алгоритм переходит к поиску заимствованного права. Если право не обнаружено, то проверяются общие права.
3.В общих правах ведется поиск:
специального права на все объекты, или
права из списка, если объект присутствует в этом списке (явного права).
Доступ к объекту разрешен, если имеется, по крайней мере, общее право на изменение (change) либо в объекте, либо в списке прав. Если найденное право меньше, чем право на изменение (change) — например, «использование» (use) или «исключение» (exclude), — то алгоритм переходит к поиску заимствованного права.
4.В заимствованном профиле ведется поиск.
Доступ к объекту разрешен, если в заимствованном профиле пользователя имеется, по крайней мере, право на изменение (change). В противном случае доступ запрещается.
Так как индивидуальный профиль пользователя просматривается первым и всегда выбирается первое встретившееся право на объект, пользователю могут быть предоставлены большие или меньшие права на объект по сравнению с общими правами и правами профиля группы. Если поместить право на исключение (exclude) в профиль индивидуального пользователя, а право на изменение (change) в заимствованный профиль, то доступ к объекту данному пользователю будет заблокирован. Однако, пользователь по-прежнему сможет выполнять над объектом операции изменения с помощью заимствованных прав, приобретаемых при выполнении соответствующей программы. Такой способ наиболее распространен для ограничения доступа к системному объекту.
Для ускорения алгоритма поиска при проверке прав используются две быстрых ветви. Обе этих ветви производят быструю проверку на основе информации, хранящейся в объекте. Если быстрая проверка дает положительный результат, то серия проверок, требуемых полным алгоритмом, не нужна и выполнение запрошенной операции разрешается. В противном случае выполняется обычный алгоритм поиска.
Давайте кратко рассмотрим вопросы защиты, возникающие при подключении к AS/400 любой незащищенной системы, будь это ПК на ЛВС или другой компьютер через Интернет (подробнее о переходе к сетевым вычислениям и связанными с этим изменениями в AS/400 — в главе 11). Надеюсь, это поможет Вам лучше использовать защиту AS/400 для сохранения своих информационных ресурсов.
Мы начнем с рассмотрения клиент/серверных приложений и подключения ПК к AS/400.
Многие организации и фирмы используют клиент/серверные приложения, или собственные, или приобретенные у ISV. Часто при этом ПК подключаются к AS/400 через ЛВС, а приложение разбивается между ПК и AS/400. Очень часто пользователи полагают, что в подобных клиент/серверных средах их данные на AS/400 защищены от несанкционированного доступа. К сожалению, это не всегда так. Защита данных зависит от того, как написано приложение и как защищена система.
Той части клиент/серверного приложения, которая работает на ПК, необходим способ доступа к базе данных AS/400. Обычно, для этого используется доступ на уровне файлов. Весьма распространенный подход при этом — использование интерфейсов ODBC (Open Database Connectivity). Но если на ПК исполняется приложение ODBC, то на AS/400 дополнительное приложение не нужно. Следовательно, невозможно использовать для защиты файлов базы данных такие средства, как заимствование прав программой. Вместо этого программа на ПК получает непосредственный доступ к файлам базы данных посредством общих, групповых или явных прав. Но вот проблема: как быть, если конечный пользователь ПК не должен иметь полного доступа к базе данных? Ограничение доступа пользователя возлагается на приложение ПК, где оно, обычно, не работает и в системе защиты возникает брешь.
ПК, как и многие другие, подключенные к AS/400, системы, никак не защищены. И я утверждаю, что нельзя полагаться ни на какой код, предназначенный для ограничения доступа к AS/400, если он выполняется на незащищенной системе. Вот что я имею в виду. Например, любое ПО на ПК, включая ПО ОС Windows 95 и Windows NT Workstation, может быть легко изменено достаточно компетентным пользователем, после чего будет работать не так, как изначально предполагалось. Это означает, что ни одна прикладная программа на ПК не может обеспечить какой-либо серьезной защиты данных на AS/400, да и данных на самом ПК.
Выход из описанной ситуации очень прост. Просто запретите всякий доступ к файлам базы данных и заставьте приложение ODBC вызывать на AS/400 описанную в главе 6 хранимую процедуру, которая заимствует права на операции с файлами. Имеются также и другие приемы, позволяющие контролировать кто, и что делает с помощью ODBC.
ODBC не единственный потенциально опасный (с точки зрения защиты информации) интерфейс, который можно использовать для работы с AS/400. TCP/IP FTP (File Transfer Protocol), передача файлов с помощью Client Access и DDM — вот лишь несколько примеров удаленных интерфейсов к AS/400, использование которых может вызывать те же проблемы защиты. Многие клиент/серверные приложения, включая написанные ISV, создаются без должной защиты данных.
Ключевой момент защиты данных AS/400 — обеспечить, чтобы любой код, отвечающий за контроль доступа, выполнялся на защищенной системе. Для пользователей AS/400 это обычно означает установку защиты, предусматривающей, по меньшей мере, защиту ресурсов (уровень 30), а также осторожность при разработке или приобретении клиент/серверных приложений.
В последнее время многие клиенты AS/400 стали подумывать об использовании вместо ПК СК (сетевых компьютеров; подробно мы рассмотрим их в главе 11). СК обладает многими преимуществами ПК, может похвастаться отсутствием некоторых потенциальных проблем последнего, да и дешевле. СК также обеспечивает лучшую защищенность.
Вирусы настолько распространены, что сегодня серьезный бизнес может опираться на ПК только при использовании какого-либо антивирусного ПО. Новые вирусы создаются каждый день, поэтому и программы проверки должны постоянно обновляться. Вирусам подвержены системы Unix и даже мэйнфреймы, что связано с наличием в них определенных возможностей системного программирования. Ведь чтобы заразить систему, код вируса должен присоединиться к некоторому исполняемому коду на двоичном машинном уровне. Так как в AS/400 видима лишь незначительная часть внутренних компонентов, внедрение вируса в нее маловероятно. И все же, это может произойти, если система не защищена надлежащим образом.
Наилучший способ предохранения от вирусов на AS/400 — защита объектов-программ и команд. Например, пользователь может изменить команду с помощью команды «CHGCMD» (Change Command) только в том случае, если у него есть право управлять объектами. Дополнительную страховку обеспечивает команда «RVKOBJAUT» (Revoke Object Authority): с ее помощью Вы можете отозвать, или, по крайней мере, отследить, чрезмерный доступ к командам, в том числе и к самой команде «CHGCMD». Кроме того, в AS/400 хакер может использовать для модификации или создания исполняемых программ лишь несколько средств и команд. Следовательно, доступ к ним нужно ограничить. Таким образом, если устранить возможность несанкционированного создания программ и изменения объектов-программ, то возможность внедрения вируса равна нулю. Средства аудита, отслеживая, кто именно использует такие изменяющие программы команды, не позволяют злоумышленнику остаться необнаруженным.
Черви похожи на вирусы, но в отличие от них не заражают другие программы. Вместо этого, червь постоянно дублируется и оттягивает на себя системные ресурсы. Например, программа-червь для AS/400 могла бы постоянно посылать себя на выполнение как новое задание. Это не вызовет повреждений, но может сильно снизить общую производительность системы. Чтобы предотвратить такую узурпацию большей части ресурсов, следует ограничить доступ к командам, изменяющим задание или его класс, и установить лимиты очереди заданий для ограничения числа параллельно исполняющихся заданий (задания, очереди заданий и классы мы рассмотрим в главе 9). С этой целью IBM изменила в V3R7 установку по умолчанию общего права на большинство таких команд с «использование» (use) на «исключение» (exclude). Общее право на многие описания заданий также было переназначено с «изменение» (change) или «использование» (use) на «исключение» (exclude).
Компьютерные троянские кони пытаются пробраться в Вашу систему незаметно, подобно античным грекам, вошедшим в Трою, скрыв своих солдат в огромном подарке — деревянном коне. Обычно, имя «троянской» программы совпадает с именем «хорошей» программы. Пользователь может поместить «троянского коня» в такое место системы, что при ее выполнении он получит более высокий уровень прав, чем имеет при исполнении «законной» программы. Проще всего поместить «троянскую» программу в библиотеку.
В главе 5 мы говорили, что система просматривает библиотеки в списке одну за другой, пока не будет найден нужный объект. Если кто-то поместит «троянскую» программу в библиотеку, предшествующую библиотеке, содержащей «хорошую» программу с тем же именем, то «троянская» программа будет найдена первой и ее автор сможет (потенциально) получить более высокую степень доступа к системе.
В качестве примера рассмотрим предоставляемую IBM библиотеку QUSRSYS, которая поставляется вместе с системой. Допустим, QUSRSYS имеет общее право доступа «изменение» (change). Эта библиотека просматривается системой перед просмотром других пользовательских библиотек в списке задания. Обращение к пользовательской библиотеке вызвало бы одноименную «троянскую» программу, предварительно помещенную хакером в QUSRSYS. Обратите внимание, на слово «допустим», с которого начинается вторая фраза этого абзаца. Именно для страховки от «троянских коней» с версии V3R7 QUSRSYS и другие библиотеки IBM поставляются с общим правом «использование» (use). Тогда же и с той же целью —.повысить защищенность системы и затруднить несанкционированный доступ к системным ресурсам — в специальные права для различных классов пользователей были внесены и другие изменения.
В отличие от ПК и систем Unix средства для защиты AS/400 от тварей, которых мы только что рассмотрели, уже присутствуют в самой системе. Как я уже сказал, в последних версиях были изменены значения параметров по умолчанию, что делает защиту системы еще надежней. И все же пользователь по-прежнему должен предпринять определенные действия по активизации всех этих форм защиты. Немного предусмотрительности — и Ваша AS/400 станет абсолютно непроницаемой для вирусов и прочей нечисти!
По мере того, как все больше компаний подключают свои AS/400 к WWW (World Wide Web), вопрос сетевой защиты серьезно обостряется. Многие только что рассмотренные нами приемы защиты AS/400 в клиент/серверной среде применимы также и при подключении ее к открытым сетям любого рода. Но Интернет стоит особо.
Прежде чем мы займемся вопросами защиты, не помешает краткий исторический экскурс в поддержку Интернета на AS/400. В состав Internet Connection, появившегося в начале 1996 в составе OS/400, входят сервер WWW, шлюз 5250-в-НТМL[ 59 ] (Hypertext Markup Language) и средства работы с базами данных из HTML. Сервер WWW получил название Internet Connection Server: он взаимодействует с пользователями WWW посредством протокола HTTP (Hypertext Transport Protocol). Шлюз HTML «на лету» преобразует поток данных 5250 в HTML, что позволяет приложениям 5250 работать в Интернете. Средства HTML для баз данных создают запросы для DB2/400 с помощью HTML и SQL. Эти расширения, добавленные в последующие версии, превратили AS/400 в полноценный сервер Интернета.
HTML задает формат потока данных между сервером WWW и средством просмотра на компьютерах, подключенных к сети. HTML не язык программирования; это мощный язык описания страниц, подобный PostScript. Его основой послужил полиграфический язык SGML (Standard Generalized Markup Language), описывающий взаиморасположение текста и графики на экране. Браузер на пользовательской машине передает на сервер запрос в форме URL (universal resource locator). Запрос URL имеет вид «http://имя-сервера/имя-документа-HTML».
HTTP — это просто транспортный протокол, использующий соединение TCP/IP между сервером WWW на AS/400 и пользователями WWW. Внешними связями могут быть выделенные линии или доступ TCP/IP по асинхронным телефонным линиям, известный как SLIP (Serial Link Internet Protocol). Имеется также поддержка протокола PPP (point-to-point protocol). Кроме сервера WWW, сетевые клиенты могут использовать для доступа к интегрированной файловой системе AS/400 протокол FTP (File Transfer Protocol). Поддержка «анонимного» пользователя обеспечивает доступ к системе любому сетевому пользователю.
Пользователь WWW на сетевом компьютере может запросить у сервера на AS/400 исполнение программы CGI (Common Gateway Interface). CGI — это стандартный протокол сервера WWW, позволяющий серверным программам непосредственно взаимодействовать с браузером на сетевом компьютере. При запуске такая программа получает информацию из вызывающего документа HTML, имя пользователя, адрес TCP/ IP и любые заданные пользователем данные. С помощью команд SQL в HTML, пользователь также может непосредственно обращаться к DB2/400 из браузера. Программа CGI выполняет запрошенные операции, включая обращения к DB2/400, и генерирует текст HTML, который WWW-сервер на AS/400 возвращает браузеру.
Для обеспечения защиты данных на AS/400 сервер WWW использует системные средства защиты. Набор новых профилей пользователя и некоторые другие параметры обеспечивают закрытость данных и предоставляют доступ только к тем файлам, для которых это разрешено.
Обычно, сервер WWW AS/400 работает под управлением профиля пользователя QTMHHTTP. Используя этот профиль, сервер WWW работает в системном состоянии. Чтобы ограничить набор файлов, к которым имеет доступ сервер, и таким образом доступ пользователей WWW к файлам DB2/400, можно ограничить права доступа к объектам для профиля QTMHHTTP. Когда пользователь WWW запрашивает у сервера выполнение программы CGI, используется другой профиль. Сервер WWW переключается на профиль QTMHHTTP1, понижает состояние системы до пользовательского и не передает заимствованные права сервера программе CGI. Профиль пользователя QTMHHTTP1 не имеет никаких прав и может работать только с объектами, имеющими общие права.
Так как пользователи Интернета обычно не зарегистрированы на AS/400, сервер WWW вообще не проверяет прав пользователей. Некоторые системы AS/400 могут требовать введения идентификатора и пароля для доступа к определенным страницам URL; однако, чаще всего страницы WWW открыты для всех пользователей Интернета. Следовательно, такой пользователь Интернета имеет доступ ко всему, к чему есть доступ у сервера WWW. Так что следует тщательно следить за назначением общих прав объектам системы. Например, если в некоторой библиотеке содержится важная информация, имеет смысл установить для нее общий доступ «исключение» (exclude) и разрешить доступ только в соответствии с явными или групповыми правами. Тогда у сервера WWW не будет доступа к такой библиотеке. Если Вы хотите назначить для библиотеки более высокий уровень общего доступа, рекомендуем вариант явного запрета на доступ к ней для QTMHHTTP и QTMHHTP1. Тогда она станет недоступной пользователям WWW.
Сервер WWW может использовать библиотеки, на которые у него есть права, но не использует списки библиотек. Как обсуждалось ранее, использование списка библиотек дает возможность поместить «троянскую» программу перед библиотекой, содержащей «хорошую» программу. Не используя списки библиотек, мы устраняем эту возможность.
Другой способ защиты системы — использование программ выхода (exit program). Так называется в AS/400 программа, написанная пользователем. Например, всякий раз, когда сетевой пользователь, пытается применить FTP для пересылки файла на или AS/400 с нее, перед началом операции с файлом вызывается программа выхода. Эта программа может запретить выполнение определенных операций в зависимости от профиля пользователя или файла, к которому производится обращение. Так же программы выхода могут запускаться при получении запроса на другие операции, такие как подключение пользователя к серверу. Программы выхода также могут применяться для ПК, подключенных удаленно, или при доступе к системе через шлюз
HTML.
Для коммерческой безопасности электронных операций по незащищенной сети, нужна защищенная пересылка данных и поддержка защищенных финансовых транзакций. В обоих случаях AS/400 использует стандартные сетевые протоколы: SSL (Secure Sockets Layer) — как средство защищенной пересылки (будет рассмотрен в главе 11); и SET (Secure Electronics Transaction) — для защиты финансовых транзакций. SET представляет собой протокол, определенный Visa/MasterCard для выполнения операций с кредитными картами по Интернету. Вдобавок, когда нужно, AS/400 предоставляет очень мощные аппаратные средства шифрования данных[ 60 ].
В завершение рассмотрения темы сетевой защиты рассмотрим брандмауэры. Брандмауэр — это отдельная от AS/400 система, используемая для защиты шлюза в Интернет. В нормальной ситуации и AS/400, и все другие компьютеры никогда не соединяются с Интернетом напрямую. Вместо этого все обращения сначала поступают к брандмауэру. Брандмауэры защищают частные сети от несанкционированного доступа, как внутреннего, так и внешнего. В соответствии с правилами защиты в данной организации, брандмауэр разрешает или запрещает доступ к ее защищенным компьютерам. Свое название брандмауэры получили потому, что они не дают огню (незащищенной сети) проникнуть в защищенную внутреннюю сеть (буквально: firewall — огнеупорная стена).
В большинстве случаев брандмауэры реализуются на ПК либо на Unix. Так как их использование предполагает наличие отдельного компьютера и, соответственно администратора, это сильно не вписывалось в интегрированную сущность AS/400. Поэтому в V4R1 был реализован скрытый брандмауэр. Для этого защищенного сетевого шлюза мы использовали IPCS (Integrated PC Server). Использование IPCS и других скрытых машин приложений подробно рассматривается в главе 11, а сейчас скажем лишь, что IPCS — отличный брандмауэр, позволяющий избежать расходов на управления дополнительным компьютером. Наш брандмауэр находится в том же корпусе (физически), не находясь в нем логически.
Защита — одна из важнейших функций любой многопользовательской системы. По мере того, как все большее число компьютеров подключается к Интернету, необходимость защиты систем только возрастает. Компонент защиты OS/400 и компонент SLIC контроля за доступом к объектам составляют механизм, удовлетворяющий сегодняшним требованиям и, вместе с тем, достаточно гибкий для расширений в будущем. По мере ужесточения требований к защите, необходимые средства могут быть легко добавлены в AS/400.
Кроме общей системной защиты AS/400, мы подробно обсудили общие способы управления правами пользователей, включая:
доступ к меню;
заимствованные права;
групповые права;
явные права.
В процессе разрешения указателя выполняется алгоритм поиска прав. Но от прав доступа к объекту мало толку, если Вы не можете его адресовать. В следующей главе мы рассмотрим адресацию и управление одноуровневой памятью. Одноуровневая память, хотя обычно и не рассматривается как часть системы защиты, тем не менее, играет главную роль в защите пользователей и их данных.