РОССИЙСКАЯ ФЕДЕРАЦИЯ МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» ИНСТИТУТ МАТЕМАТИКИ И КОМПЬЮТЕРНЫХ НАУК КАФЕДРА ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ Допустить к защите в ГАК Заведующий кафедрой информационной безопасности д.т.н. профессор А.А. Захаров (подпись) «___» ________20__ г. Шаламов Вадим Валерьевич Разработка защищенного корпоративного портала для Филиала ООО «ЛУКОЙЛ-Инжиниринг» «КогалымНИПИнефть» в г. Тюмени (Выпускная квалификационная работа) Научный руководитель: к.т.н. доцент кафедры ИБ /А.В. Широких/ (подпись) Автор работы: /В.В. Шаламов/ (подпись) Тюмень – 2014 Оглавление Сокращения и обозначения .................................................................................... 3 Введение ................................................................................................................... 4 Глава 1. Описание предметной области ............................................................... 7 1.1. Описание требований к разрабатываемой ИС......................................... 7 1.2. Выбор средств для разработки .................................................................. 9 1.3. Обзор технологий ..................................................................................... 12 Глава 2. Анализ угроз ........................................................................................... 28 2.1. Цель защиты ИС ....................................................................................... 28 2.2. Определение угроз ИБ и основы для выбора мер защиты ................... 30 2.3. Определение актуальных угроз ИБ ........................................................ 32 Глава 3. Разработка ИС ......................................................................................... 38 3.1. Настройка сервера .................................................................................... 38 3.2. Проектирование базы данных ................................................................. 44 3.3. Идентификация и аутентификация пользователей ............................... 46 3.4. Разграничение прав доступа .................................................................... 47 3.5. Реализация общих разделов (Новости, объявления, мероприятия, информационные страницы, галерея, библиотека) ........................................ 49 3.6. Реализация раздела «Предоставление расчетного листа».................... 52 3.7. Реализация администраторской части портала ..................................... 57 3.8. Реализация раздела «Личная переписка»............................................... 58 3.9. Меры защиты, примененные при разработке компонент системы ..... 59 Заключение ............................................................................................................ 62 Список литературы ............................................................................................... 64 Приложения ........................................................................................................... 66 Сокращения и обозначения ИС – Информационная система ИБ – Информационная безопасность ПО – Программное обеспечение СУБД – Система управления базами данных ПДн – Персональные данные ИСПДн – Информационная система персональных данных НСД – Несанкционированный доступ RoR – Ruby on Rails 4 Введение На каждом достаточно большом предприятии существует корпоративный портал. Корпоративный портал позволяет сотруднику получить доступ к корпоративным данным и приложениям, узнать о текущих мероприятиях, новостях внутри предприятия, обсуждать различные темы с другими сотрудниками посредством форума и личных сообщений, и многое другое. Сегодня Филиал «КогалымНИПИнефть» в ООО г. Тюмени одно «ЛУКОЙЛ-Инжиниринг» из ведущих научно- исследовательских и проектных предприятий в стране. На него возложены функции головной структуры по научному обеспечению производственной деятельности предприятий ОАО «ЛУКОЙЛ» в Западно-Сибирском регионе. Руководство Филиала ООО «ЛУКОЙЛ-Инжиниринг» «КогалымНИПИнефть» приняло решение о создании корпоративного портала, предоставляющего сотрудникам на начальном этапе следующий функционал: Просмотр и добавление новостей, объявлений, альбомов в галерее, документов в библиотеке, различных информационных страниц. Создание плана мероприятий (совещания, плановые собрания, учебные программы и т.д.) филиала с информированием участников и генерированием документов для утверждения начальством. Просмотр расчетного листа и графика выплат за выбранный период. 5 Заказ справки 2-НДФЛ. Поиск сотрудника по ФИО или по подразделению, телефонный справочник. Общение между сотрудниками посредством личной переписки и создания конференций. Выбирая между покупкой готового решения и разработкой своего продукта, руководством было принято решение о разработке собственного корпоративного портала по следующим причинам: 1. Проанализировав много корпоративных решений, не было найдено комплексных, предоставляющих весь необходимый функционал. 2. Интегрирование информационных систем проводит головная организация по информационно-технологическому обеспечению деятельности Группы «ЛУКОЙЛ» «ЛУКОЙЛ-ИНФОРМ». 3. В планах много специфических задач (подача заявки на закупку вычислительной и организационной техники, просмотр статистики лицензий ПО, подача заявления на отпуск в утвержденной форме и т.д.), разработав собственное решение, можно будет легко его дорабатывать. Мне было поручено заняться разработкой корпоративного портала. Проанализировав требуемый функционал, можно сделать вывод о том, что в системе будет обрабатываться следующая информация: фамилия, имя, отчество; занимаемая должность; 6 заработная плата; отработанное время; личные сообщения. Перечисленный тип информации относится к персональным данным и конфиденциальной информации, в связи с этим требуется предпринять ряд мер по защите этой информации. Целью дипломного проекта является разработка защищенного корпоративного портала для Филиала ООО «ЛУКОЙЛ-Инжиниринг» «КогалымНИПИнефть» в г. Тюмени, предоставляющего перечисленный функционал. Для достижения поставленной цели необходимо решить следующие задачи: 1. Выбрать средства для разработки корпоративного портала. 2. Провести анализ угроз информационной безопасности. 3. Разработать требуемый функционал с необходимыми мерами защиты на основе анализа угроз. 7 Глава 1. Описание предметной области 1.1. Описание требований к разрабатываемой ИС В соответствии с требованиями руководства на начальном этапе разработанный корпоративный портал позволит разным категориям пользователей выполнять различные функции. Для обычного пользователя: Просмотр фотографий, новостей, мероприятий, организационной объявлений, структуры, галереи различных информационных страниц. Поиск сотрудника по ФИО и подразделению. Общение с сотрудниками посредством личной переписки и создания конференций. Просмотр расчетного листа и графика выплат за выбранный период. Заказ справки 2-НДФЛ. Для пользователя, ответственного за формирование плана совещаний, мероприятий, учебных программ и прочего: Формирование графика мероприятий, посредством указания периода в календаре и задавания атрибутов мероприятия. Информирование участников и ответственных за подготовку, сопровождение и проведение мероприятий. Подготовка отчетов в утвержденном виде для согласования плана с руководством Филиала. 8 Для пользователя, ответственного за информирование сотрудников о новостях, объявлениях: Наполнение соответствующих разделов. Для администраторов: Просмотр активности сотрудников на портале (время входа, ip адрес компьютера, с которого осуществлен вход, созданные и измененные записи). Управление уровнями доступа пользователя. Дополнительные требования: Доступ сотрудника осуществляться на корпоративный незаметно, то есть портал должна должен происходить прозрачная аутентификация, используя данные учетной записи вошедшего в систему пользователя Windows. Вся деятельность пользователей на портале должна регистрироваться в виде логов. Отказаться от веб-решений на платформе Microsoft (Sharepoint, ASP. NET MVC, ASP .NET) и вести поиск решений на другой платформе. 9 1.2. Выбор средств для разработки Корпоративный портал является веб-приложением. На данный момент все перечисленные задачи по разработке корпоративного портала можно реализовать на всех популярных фреймфорках, например Ruby on Rails, Django, ASP .Net MVC, фреймворки на PHP. Одним из требований начальства было отказаться от веб-решений на платформе Microsoft (Sharepoint, ASP. NET MVC, ASP .NET) и вести поиск решений на другой платформе. Преимуществом Ruby on Rails над другими фреймворками состоит в том, что существует большое количество гемов (модулей), которые просто устанавливаются в проект и тем самым значительно упрощают и ускоряют разработку, что в данном случае очень весомо. Гемы есть практически на любые задачи. На гитхабе существуют множество проектов для руби, значительно больше чем на php frameworks. В Ruby on Rails много встроенных функций для обеспечения безопасности. При использовании инструментов фреймворка исключены SQL-инъекции и XSS атаки. Все входные параметры экранируются по умолчанию. Выводимые переменные в шаблонах также экранируются. Для Django так же существует много дополнительных компонентов, поэтому выбор был между Ruby on Rails и Django, потому как оба фреймворка достаточно популярны сейчас, имеют активно развивающееся сообщество программистов, много проектов на GitHub, позволяют решить поставленные задачи в короткие сроки. 10 Окончательный выбор был сделан в пользу Ruby on Rails. В фреймворке Ruby on Rails за представление бизнес-логики и данных отвечает шаблон Active Record, являющейся описанием системы ORM (Object Relation Mapping). Object Relational Mapping - это техника, соединяющая сложные объекты приложения с таблицами в системе управления реляционными базами данных. С использованием ORM, свойства и взаимоотношения этих объектов приложения могут быть с легкостью сохранены и получены из базы данных без непосредственного написания выражений SQL, и, в итоге, с меньшим суммарным кодом для доступа в базу данных. Active Record предоставляет нам несколько механизмов, наиболее важными из которых является способности: Представление моделей и их данных. Представление связей между этими моделями. Представление иерархий наследования с помощью связанных моделей. Валидация моделей до того, как они будут сохранены в базу данных. Выполнение операций с базой данных в объектно- ориентированном стиле. В качестве СУБД для Active Record можно использовать MySQL, PostgreSQL, SQLite, Oracle, SQL Server, DB2 или Firebird. Из списка СУБД, поддерживаемых фреймворком RoR, выбор был сделан в пользу Microsoft SQL Server 2008 R2, в связи с тем, что в Филиале 11 ООО «ЛУКОЙЛ-Инжиниринг» «КогалымНИПИнефть» существует отдел, занимающийся администрированием серверов базы данных под управлением этой СУБД. Использовать Rails можно на практически любой операционной системе, однако для развертывания разработчики рекомендуют системы семейства *nix. На работе выделили под разработку портала сервер с операционной системой CentOS. В качестве веб-сервера для RoR рекомендуется использовать Apache или nginx с модулем Phusion Passenger. Выбор был сделан в пользу Apache в связи с тем, что для него существует модуль mod_auth_kerb, позволяющий реализовать прозрачную аутентификацию на веб-сервер, используя учетную запись Windows. В свою очередь для реализации прозрачной аутентификации была выбрана технология Kerberos. Протокол Kerberos выгодно отличается от NTLM большей гибкостью и эффективностью использования. Обеспечивает повышенный уровень безопасности. 12 1.3. Обзор технологий Ruby — интерпретируемый язык программирования высокого уровня. Обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, «сборщиком мусора» и многими другими возможностями, поддерживающими разных парадигм программирования, прежде много всего классово-объектную. Ruby был задуман в 1993 году (24 февраля) японцем Юкихиро Мацумото, стремившимся создать язык, совмещающий все качества других языков, способствующие облегчению труда программиста. К возможностям Ruby можно отнести следующее: Имеет лаконичный и простой синтаксис, частично разработанный под влиянием Ada, Eiffel и Python. Позволяет обрабатывать исключения в стиле Java и Python. Позволяет переопределять операторы, которые на самом деле являются методами[1]. Создатель Ruby Yukihiro «matz» Matsumoto, как утверждают эксперты, смешал в Ruby лучшие элементы его любимых языков — Perl, Smalltalk, Eiffel, Ada и Lisp, — чтобы получить новый, который совмещал бы в себе функциональное программирование и императивное программирование. Вот так создатель говорит о своем творении: "Я пытался сделать Ruby естественным, но не простым, чтобы он отражал саму жизнь. Да, Ruby внешне прост, но внутри он очень комплексный. Как человеческое тело". Можно выделить следующие важнейшие особенности описываемого языка программирования: 13 Все является объектом. Любые данные в Ruby могут иметь собственные свойства и действия. То есть, таким образом, мы можем присвоить какие-то методы даже обычному числу или любому другому примитиву. Расширяемость базовых возможностей. Ruby изо всех сил старается не ограничивать разработчика вообще ни в чем. Обработка языками исключений. вроде JavaScript Наравне или с другими Python популярными творение Yukihiro Matsumoto также имеет встроенную поддержку обработку исключений для удобства работы с ошибками. Независимость от платформы. Ruby не только запускается на любой системе, включая древний MS-DOS, но и дает возможность использовать мультипоточности вне зависимости от того, поддерживает система эту опцию или нет. Ruby — очень амбициозный и достаточно мощный инструмент, который применяется очень многими разработчиками, причем и desktopприложений тоже. К примеру, его часто используют в качестве внутреннего скриптового языка для комплексных приложений. Итак, как говорят эксперты, Ruby on Rails — это веб-среда, написанная на языке программирования Ruby и использующая его же в качестве фундамента. Мы не так часто сталкиваемся с термином "веб-среда"; гораздо чаще слышим и читаем "веб-платформа", "веб-технология", "библиотека" и «framework». Значит, Ruby on Rails не является ничем из перечисленного. Что же такое веб-среда? Ответ разработчиков прост: это нечто подобное "системе поддержки" программы, но реализованное на более низком уровне, чем обычная библиотека с вспомогательным кодом. В качестве примера 14 можно привести SQL-запрос. Ruby on Rails включает в себя мощную библиотеку взаимодействия с базами данных под названием ActiveRecord, которая берет на себя всю рутину, уменьшая тем самым объем кода финального приложения. Вообще же, Ruby on Rails включает в себя заготовленный функционал для решения практически всех обыденных задач, с которыми сталкиваются современные веб-специалисты. Это значит, что и скорость разработки заметно возрастает. На официальном сайте утверждается, что использование Ruby on Rails способно ускорить работу чуть ли не в десять раз по сравнению с работой с чистого листа. Однако еще более важно в рамках разговора о веб-приложениях второго поколения — это реализация всех новейших функций, которые являются их неотъемлемой частью. Ruby on Rails включают в себя обширную и мощную библиотеку и для этих целей, которые могут использоваться без какого-либо знания JavaScript. Мы используем функции среды из Rubyскриптов и Ruby-шаблонов, которые очень похожи на PHP-страницы, и эти функции автоматически вызывают JavaScript. Ruby on Rails по умолчанию заточен под безопасность проекта. При использовании инструментов фреймворка исключены SQL-инъекции и XSS атаки. Все входные параметры экранируются по умолчанию. Выводимые переменные в шаблонах также экранируются. Rails отлично работает со многими веб-серверами и СУБД. В качестве веб-сервера рекомендуется использовать Apache или nginx с модулем Phusion Passenger. Rails также можно разворачивать 15 используя Unicorn, Thin, Mongrel или FastCGI. В качестве СУБД можно использовать MySQL, PostgreSQL, SQLite, Oracle, SQL Server, DB2 или Firebird. Использовать Rails можно на практически любой операционной системе, однако для развертывания мы рекомендуем системы семейства *nix[2]. Microsoft SQL Server – это комплексная высокопроизводительная платформа баз данных, обеспечивающая управление данными в масштабе предприятия и оснащенная встроенными средствами бизнес-аналитики (Business Intelligence, BI). SQL Server позволяет организациям строить интегрированные предприятия, решения для предоставляя учета и сервисы, анализа данных обеспечивающие масштаба надежность, безопасность доступа и масштабируемость. Благодаря исчерпывающему набору функций, взаимодействию с существующими системами и автоматизации типовых задач, SQL Server представляет собой полное решение в области хранения, управления и анализа данных для широчайшего диапазона масштабов. Каждая очередная версия SQL Server обогащается новыми возможностями, реализованными в соответствии с общим планом развития продукта и пожеланиями пользователей. С выпуском версии SQL Server 2008 и, в особенности, SQL Server 2008 R2 продукт Microsoft SQL Server стал не просто сервером баз данных, а целостной платформой построения систем управления корпоративной информацией[3]. Использовать Rails можно на практически любой операционной системе, однако для развертывания разработчики рекомендуют системы семейства *nix. На работе выделили под разработку портала CentOS. 16 Centos является дистрибутивом GNU/Linux, основанном на свободных исходных текстах коммерческого дистрибутива Red Hat Enterprise Linux компании Red Hat, и совместимый с ним. Срок поддержки каждой версии CentOS составляет 10 лет (с помощью выпуска обновлений безопасности). Новая версия CentOS выходит раз в 2 года и каждая версия регулярно обновляется (каждые 6 месяцев) для поддержки новых аппаратных средств. В результате это приводит к безопасной, легко обслуживаемой, надежной, предсказуемой и масштабируемой Linux среде[4, 5]. В качестве веб-сервера для RoR рекомендуется использовать Apache или nginx с модулем Phusion Passenger. Выбор был сделан в пользу Apache в связи с тем, что для существует модуль mod_auth_kerb, позволяющий реализовать прозрачную аутентификацию на веб-сервер, используя учетную запись Windows. Apache HTTP-сервер — это так называемый свободный веб-сервер, представляющий собой кросплатформенное программное обеспечение. Apache поддерживает следующие операционные системы: BSD, Microsoft Windows, Linux, Mac OS, BeOS, Novell NetWare. Надежность и гибкость конфигурации – главные достоинства Apache. Благодаря этому ПО можно осуществлять подключение внешних модулей, использующихся для предоставления данных, модифицировать сообщения об ошибках, применять СУБД для аутентификации пользователей. Apache поддерживает IPv6. Начиная с апреля 1996 года и до настоящего времени Apache является самым распространенным и популярным HTTP-сервером в сети Интернет. Согласно статистическим данным в августе 2007 HTTP-сервером работал на 17 51% всех веб-серверов, в мае 2009 года этот показатель снизился до 46%, а в январе 2011 года – вырос до 59%. На сегодняшний день более 59% от общего количества веб-сайтов обслуживаются веб-сервером Apache. Разработкой и поддержкой Apache занимаются специалисты открытого сообщества разработчиков под эгидой Apache Software Foundation. Apache включен в большинство программных продуктов, среди которых IBM WebSphere и СУБД Oracle. Apache оснащен встроенным механизмом виртуальных хостов. Благодаря этому на одном IP-адресе можно обслуживать большое количество веб-проектов (доменных имен), при этом отображая для каждого из них свое содержимое. Для каждого виртуального хоста имеется возможность указать сои настройки модулей и ядра, а также установить ограничения к доступу ко всему сайту либо некоторым файлам. С помощью Apache-ITK для каждого виртуального хоста можно запускать процесс httpd с идентификаторами gid и uid. Также есть модули, которые позволяют ограничивать и учитывать ресурсы сервера (трафик, RAM, CPU) отдельно для каждого виртуально хоста[6]. В свою очередь для реализации прозрачной аутентификации была выбрана технология Kerberos. Протокол Kerberos выгодно отличается от NTLM большей гибкостью и эффективностью использования. Обеспечивает повышенный уровень безопасности. Ряд преимуществ: Более эффективная аутентификация на серверах. 18 Взаимная аутентификация. Делегированная аутентификация. Упрощенное управление доверительными отношениями. Совместимость. Kerberos — сетевой протокол аутентификации, позволяющий передавать данные через незащищённые сети для безопасной идентификации. Ориентирован, в первую очередь, на клиентсерверную модель и обеспечивает взаимную аутентификацию — оба пользователя через сервер подтверждают личности друг друга[7]. Протокол Kerberos был специально разработан для того, чтобы обеспечить надежную аутентификацию пользователей. Предусматривается, что начальный обмен информацией между клиентом и сервером происходит в незащищённой среде, а передаваемые пакеты могут быть перехвачены и модифицированы, Протокол Kerberos может использовать централизованное хранение аутентификационных данных и является основой для построения механизмов Single Sign-On (возможность использования единой учетной записи пользователя для доступа к любым ресурсам области). Протокол основан на понятии Ticket (билет). Ticket (билет) является зашифрованным пакетом данных, который выдается доверенным центром аутентификации, в терминах протокола Kerberos — Key Distribution Center (KDC, центр распределения ключей). Когда пользователь выполняет первичную аутентификацию, после успешного подтверждения его подлинности KDC выдает первичное 19 удостоверение пользователя для доступа к сетевым ресурсам — Ticket Granting Ticket (TGT). В дальнейшем, при обращении к отдельным ресурсам сети, пользователь, предъявляя TGT, получает от KDC удостоверение для доступа к конкретному сетевому ресурсу — Service Ticket (TGS). Одним из преимуществ протокола Kerberos, обеспечивающим высокий уровень безопасности, является то, что при любых взаимодействиях не передаются ни пароли, ни значения хеша паролей в открытом виде. Работая с протоколом Kerberos, необходимо, чтобы системные часы всех участвующих во взаимодействии узлов были синхронизированы. В качестве примера реализации протокола Kerberos имеет смысл отметить доменную аутентификацию пользователей в операционных системах Microsoft, начиная с Windows 2000. Рассмотрим, как осуществляется аутентификация посредством протокола Kerberos. В процессе аутентификации задействованы следующие основные компоненты: Клиент, запрашивающий доступ к службе или пытающийся осуществить аутентификацию. Сервер, на котором работают службы, доступ к которому требуется клиенту. Компьютер, которому доверяет клиент (В данном случае речь идет о контроллере домена, на котором выполняется служба KDC). KDC представляет собой службу, работающую на физически защищенном сервере. 20 Она ведет базу ученых данных с информацией обо всех участниках безопасности (security principal) своей области. Если речь идет о сетях Windows 2000/2003/2008, понятию «область Kerberos» соответствует понятие «домен». Вместе с информацией о каждом security principal в базе данных KDC сохраняется криптографический ключ, известный только этому объекту и службе KDC. Указанный ключ, который называют долговременным, используется для связи пользователя системы безопасности с центром распределения ключей. Процесс аутентификации пользователя: 1. Получив приглашение на ввод имени пользователя, пароля и домена, пользователь указывает эти данные. 2. Затем компьютер пользователя обращается к службе KDC и передает ей имя пользователя, имя домена, а также текущее время на рабочей станции пользователя, при этом имя пользователя передается в открытом виде, текущее время на рабочей станции пользователя передается в зашифрованном виде и является аутентификатором. Ключ шифрования формируется из пароля пользователя в результате хеширования. 3. Служба KDC ищет пользователя в AD, выявляет мастер ключ пользователя, который основан на пароле пользователя и расшифровывает аутентификатор, т. е. получает время отправки запроса. Разница во времени отправки запроса и текущего времени на контроллере домена не должно превышать определенного значения, установленного политикой протокола Kerberos 21 4. Затем KDC создает два объекта: a. ключ сессии, посредством которого будет обеспечиваться зашифрование данных при обмене между клиентом и службой KDC, b. билет на получение билета Ticket-Granting Ticket (TGT). TGT включает: вторую копию ключа сессии, имя пользователя, время окончания жизни билета. Билет на получение билета шифруется с использованием собственного мастер ключа службы KDC, который известен только KDC, т. е. TGT может быть расшифрован только самой службой KDC. 5. Служба KDC зашифровывает аутентификатор пользователя (time stamp) и ключ сессии с помощью ключа клиента. После этого эти данные отправляются клиенту. 6. Компьютер клиента получает информацию от службы KDC, проверяет аутентификатор, расшифровывает ключ сессии. 7. Теперь клиент обладает ключом сессии и TGT, что предоставляет возможность безопасного взаимодействия со службой KDC. Клиент аутентифицирован в домене и получает возможность осуществлять доступ к ресурсам домена, используя протокол Kerberos. Итак, клиенту, прошедшему аутентификацию посредством Kerberos, требуется получить доступ к ресурсам на других серверах в том же домене. 1. Клиент обращается к службе KDC. Клиент представляет KDC свой TGT и маркер времени, которые зашифрованы с помощью ключа сессии, известного службе KDC. 22 2. KDC расшифровывает TGT, используя свой собственный ключ. Маркер времени расшифровывается с помощью сессионного ключа. Теперь KDC может подтвердить, что запрос пришел от «правильного» пользователя, т. к. этот пользователь может использовать этот сессионный ключ. 3. Затем KDC создает пару билетов, один для клиента, один для сервера, к ресурсам которого клиент должен будет получать доступ. Каждый билет содержит имя пользователя, запрашивающего доступ, получателя запроса, маркер времени, показывающий, когда был создан билет, а также срок жизни билета. Оба билета будут также содержать новый ключ, K_cs который, таким образом известен и клиенту и серверу. Этот ключ будет обеспечивать возможность безопасного взаимодействия между ними. KDC шифрует билет сервера, используя мастер – ключ сервера, затем вкладывает билет сервера внутрь билета клиента, который также содержит ключ K_cs 4. Вся эта структура зашифровывается с помощью сессионного ключа, который стал доступен пользователю при аутентификации. После чего эта информация отправляется клиенту. 5. Получив билет, клиент расшифровывает его с помощью сессионного ключа, т. е. K_cs становится доступным клиенту, K_cs доступен также и серверу. Клиент не может прочитать билет сервера, т. к. он зашифрован на ключе сервера. 23 6. Клиент зашифровывает маркер времени с помощью ключа, K_cs затем отправляет маркер времени и билет сервера самому серверу, к ресурсам которого пытается получить доступ клиент. 7. Получив эту информацию, на первом этапе сервер расшифровывает свой билет, используя свой долговременный ключ. Это предоставляет возможность получить доступ к K_cs , с помощью которого будет на втором этапе расшифрован маркер времени, полученный от клиента. 8. Теперь и клиент, и сервер обладают ключом K_cs. Следовательно, сервер может быть уверен в том, что клиент правильно идентифицирован, т. к. для шифрования маркера времени был использован K_cs . В случае необходимости ответа сервера клиенту, сервер воспользуется ключом K_cs . Клиент будет знать, что сервер правильно идентифицирован, поскольку сервер должен использовать, чтобы получить K_cs[8]. 24 HTTPS - расширение протокола HTTP, поддерживающее шифрование. Данные, передаваемые по протоколу HTTP, «упаковываются» в криптографический протокол SSL или TLS, тем самым обеспечивается защита этих данных. SSL - криптографический протокол, обеспечивающий безопасную передачу данных в сети Интернет. Протокол SSL обеспечивает безопасность, аутентификацию на базе SSL-сертификатов и согласование безопасности по установленному сетевому соединению, поэтому множество компаний и продуктов приняли SSL в качестве коммуникационного протокола. Протокол SSL обеспечивает выполнение следующих задач: обеспечение защищенности информации: данные, находящиеся в процессе передачи между сервером и клиентом, защищены от перехвата и должны иметь возможность быть прочитанными только адресатом. Это требование обязательно как для данных, относящихся к самому протоколу (диалог безопасности во время установления связи), так и для данных приложения, посылаемых в течение самой сессии; аутентификация клиента и сервера друг для друга: протокол SSL поддерживает использование стандартных технологий криптографии с публичным и приватным ключами с целью аутентификации взаимодействующих сторон друг для друга. Хотя более распространен случай аутентификации сервера для клиента, SSL может аутентификации клиента; использовать те же методы для 25 обеспечение целостности информации: во время сессии данные не должны быть подвержены внешнему и внутреннему влиянию. Протокол SSL разработан компанией Netscape (известной по одноименному браузеру) в 1994 году. Разработчикам была поставлена задача: разработать зашифрованный путь обмена данными между клиентом и сервером, независимо от операционной системы. Через несколько месяцев после релиза SSL 1.0 Netscape выпустила усовершенствованную версию, обозначив SSL 2.0. Стоит отметить, что первые релизы не были доступны IT-аудитории. И лишь в конце 1995 года Netscape выпустила SSL 3.0, публичный релиз, и именно эта версия по сей день является стандартом безопасной передачи данных в Интернет. Именно, версию SSL 3.0 поддерживает большинство веб-браузеров в наше время. Протокол SSL состоит из двух уровней. На нижнем уровне транспортного протокола (TCP/IP) он является протоколом записи и используется для инкапсуляции (то есть формирования пакета) разнообразных протоколов (HTTP, FTP, POP3 и SMTP). Для каждого из выше перечисленных протоколов SSL обеспечивает условия, при которых сервер и клиент подтверждают друг другу свою подлинность, выполняют алгоритмы шифрования и производят обмен криптографическими ключами, прежде чем протокол прикладной программы начнёт обмен данные. На самом деле SSL объединяет в себе два протокола: согласования и передачи данных. Протокол передачи данных управляет потоком данных между двумя конечными системами соединения SSL. 26 Протокол согласования служит для идентификации одной или обеих конечных систем соединения SSL и создания уникального симметричного ключа, с помощью которого генерируются ключи для шифрования и расшифровки идентификации данных, передаваемых конечных систем в по этому протоколе соединению. SSL Для применяется асимметричное шифрование, цифровые SSL-сертификаты и процедуры согласования SSL. Обычно SSL идентифицирует сервер, но может использоваться и для идентификации клиента. Цифровой SSL-сертификат, выданный SSL-сертификатной организацией(Certificate Authority), может быть связан с каждой из конечной систем или с приложениями, применяющими протокол SSL в конечных системах. Цифровой SSL-сертификат состоит из публичного ключа и идентификационной информации с цифровой подписью уполномоченной SSL-сертификатной организации. С каждым публичным ключом связан приватный ключ. Приватный ключ не входит в состав SSL-сертификата и хранится отдельно от него. При идентификации клиента или сервера конечная система должна предоставить доказательство наличия приватного ключа, соответствующего публичному ключу цифрового SSL-сертификата. Существуют 2 вида SSL-сертификатов по степени доверия веббраузерами: Trusted (доверительные); Self-Signed (самоподписанные). Доверительный SSL-сертификат — это SSL-сертификат, выписанный уполномоченным органом, сертификатной организацией. SSL-сертификат выписывается на определенное доменное имя, указывается срок действия 27 SSL-сертификата (до 5 лет), содержит цифровые печати и подписи. Популярные Web-браузеры заранее настроены доверять SSL-сертификатам, выданным сертификатными организациями, так что не нужно никакой дополнительной конфигурации для подключения клиента через SSL к серверу, для которого был выдан SSL-сертификат. При заходе на веб-сайт, оснащенный SSL-сертификатом, в адресной или статусной строке браузера появляется иконка «замка». Кликнув на нее, вы можете узнать об обладателе SSL-сертификата следующее: имя человека или организации выпускающего SSL-сертификат; для кого был выпущен данный SSL-сертификат (субъект SSLсертификата); имя владельца домена; географическое расположение сервера, на котором расположен сайт; открытый ключ субъекта; временные параметры (срок действия SSL-сертификата и т.д.)[9]. 28 Глава 2. Анализ угроз 2.1. Цель защиты ИС Персональные данные - любая информация, относящаяся к прямо или косвенно определенному или определяемому физическому лицу (субъекту персональных данных); (ст.3 п1. № 152-ФЗ) [15] В системе ведется обработка следующей информации: фамилия; имя; отчество; занимаемая должность; заработная плата; отработанное время. Перечисленная информация относится к категории персональных данных. Согласно ст.9 ч.4 № 152-ФЗ для обработки персональных данных требуется письменное согласие субъекта персональных данных. При устройстве на работу в филиал ООО «ЛУКОЙЛ-Инжиниринг» «КогалымНИПИнефть» в г. Тюмени подписывается согласие на обработку. В случае если субъект персональных данных согласие не подписал, или в случае отзыва согласия, данные его не обрабатываются в информационной системе[15]. В соответствии со ст.19 ч.3 п.2 № 152-ФЗ Правительство Российской Федерации устанавливает требования к защите персональных данных при их 29 обработке в информационных системах персональных данных, исполнение которых обеспечивает установленные уровни защищенности персональных данных[15]. Требования представлены в постановлении Правительства Российской Федерации от 1 ноября 2012г. № 1119 г. Москва «Об утверждении требований к защите персональных данных при их обработке в информационных системах персональных данных». 30 2.2. Определение угроз ИБ и основы для выбора мер защиты Согласно постановлению правительства, упомянутому ранее, можно определить, что уровень защищенности ИСПДн является УЗ-4, на основе следующих принципов: В информационной системе обрабатываются иные типы ПДн (исключая специальные категории, биометрические и общедоступные ПДн). В ИСПДн обрабатываются ПДн только сотрудников организации. Актуальными угрозами являются угрозы 3-го типа[16]. В качестве основы для выбора мер защиты необходимо использовать приложение к составу и содержанию организационных и технических мер по обеспечению безопасности ПДн при их обработке в ИСПДн, утвержденные приказом ФСТЭК России от 18 февраля 2013 г. №21. (см. ПРИЛОЖЕНИЕ 1) Необходимо так же составить частную модель угроз, на основании документов: «Базовая модель угроз безопасности персональных данных при их обработке в информационных системах персональных данных (выписка)», утвержденная ФСТЭК России 15 февраля 2008 г. «Методика определения актуальных угроз безопасности персональных данных при их обработке в информационных системах персональных данных», утвержденная ФСТЭК России 14 февраля 2008 г. На основе базовой модели угроз были определены следующие возможные угрозы: Угроза НСД с применением стандартных функций операционной системы, СУБД, прикладной программы. 31 Угроза НСД с применением специально созданных для этого программ. Угрозы типа «Отказ в обслуживании». Угроза «Анализа сетевого трафика». Угроза сканированя сети. Угроза выявления паролей. Угроза навязывания ложного маршрута сети. Угроза внедрения ложного объекта в сети. 32 2.3. Определение актуальных угроз ИБ Для определения актуальности угрозы необходимо определить уровень исходной защищенности. Таблица 2 - Показатели исходной защищенности ИСПДн Технические и эксплуатационные характеристики ИСПДн Уровень защищенности Высокий Средний Низкий 1. По территориальному размещению: корпоративная распределенная ИСПДн, охватывающая многие подразделения одной организации; + - + - - + - - - + - 2. По наличию соединения с сетями общего пользования: ИСПДн, физически отделенная от сети общего пользования 3. По встроенным (легальным) операциям с записями баз персональных данных: чтение, поиск; 4. По разграничению доступа к персональным: ИСПДн, к которой имеет доступ определенный перечень сотрудников организации, являющейся владельцем 33 Технические и эксплуатационные характеристики ИСПДн Уровень защищенности Высокий Средний Низкий + - - - - + + - - ИСПДн, либо субъект ПДн; 5. По наличию соединений с другими базами ПДн иных ИСПДн: ИСПДн, в которой используется одна база ПДн, принадлежащая организации владельцу данной ИСПДн. 6. По уровню обобщения (обезличивания) ПДн: ИСПДн, в которой предоставляемые пользователю данные не являются обезличенными (т.е. присутствует информация, позволяющая идентифицировать субъекта ПДн). 7. По объему ПДн, которые предоставляются сторонним пользователям ИСПДн без предварительной обработки: ИСПДн, не предоставляющие никакой информации. Исходный уровень защищенности - средний. При составлении перечня актуальных угроз безопасности ПДн каждой степени исходной защищенности ставится в соответствие числовой коэффициент Y 1 , а именно: 34 0 для высокой степени исходной защищенности; 5 для средней степени исходной защищенности; 10 для низкой степени исходной защищенности. Под частотой (вероятностью) реализации угрозы понимается определяемый экспертным путем показатель, характеризующий, насколько вероятным является реализация конкретной угрозы безопасности ПДн для данной ИСПДн в складывающихся условиях обстановки. Вводятся четыре вербальных градации этого показателя: маловероятно - отсутствуют объективные предпосылки для осуществления угрозы (например, угроза хищения носителей информации лицами, не имеющими легального доступа в помещение, где последние хранятся); низкая вероятность - объективные предпосылки для реализации угрозы существуют, но принятые меры существенно затрудняют ее реализацию (например, использованы соответствующие средства защиты информации); средняя вероятность - объективные предпосылки для реализации угрозы существуют, но принятые меры обеспечения безопасности ПДн недостаточны; высокая вероятность - объективные предпосылки для реализации угрозы существуют и меры по обеспечению безопасности ПДн не приняты[18]. При составлении перечня актуальных угроз безопасности ПДн каждой градации вероятности возникновения угрозы ставится в соответствие числовой коэффициент Y 2 , а именно: 0 для маловероятной угрозы; 2 для низкой вероятности угрозы; 35 5 для средней вероятности угрозы; 10 для высокой вероятности угрозы. С учетом изложенного коэффициент реализуемости угрозы Y будет определяться соотношением: Y = (Y1 + Y 2 ) / 2 0 . По значению коэффициента реализуемости угрозы Y формируется вербальная интерпретация реализуемости угрозы следующим образом: если 0 < Y < 0,3, то возможность реализации угрозы признается низкой; если 0,3 < Y < 0,6, то возможность реализации угрозы признается средней; если 0,6 < Y < 0,8, то возможность реализации угрозы признается высокой; если Y > 0,8, то возможность реализации угрозы признается очень высокой. Далее оценивается опасность каждой угрозы. Этот показатель имеет три значения: низкая опасность - если реализация угрозы может привести к незначительным негативным последствиям для субъектов персональных данных; средняя опасность - если реализация угрозы может привести к негативным последствиям для субъектов персональных данных; высокая опасность - если реализация угрозы может привести к значительным негативным последствиям для субъектов персональных данных[18]. 36 Таблица 3. Определение актуальных угроз. Класс угроз Вероятность Y2 Возможность реализации Опасность Актуальность реализации Угроза НСД с Средняя применением стандартных функций операционной системы, СУБД, прикладной программы 5 Средняя Средняя Актуальная Угроза НСД с Маловероятн применением о специально созданных для этого программ 0 Низкая Средняя Неактуальная Угрозы типа Средняя «Отказ в вероятность обслуживании» 5 Средняя Низкая Неактуальная 5 Средняя Средняя Актуальная 2 Средняя Низкая Неактуальная 5 Средняя Средняя Актуальная Угроза «Анализа сетевого трафика» Средняя Угроза сканированя сети Низкая Угроза выявления паролей Средняя вероятность вероятность вероятность 37 Таким образом, были определены актуальные угрозы: Угроза НСД с применением стандартных функций операционной системы, СУБД, прикладной программы. Угроза «Анализа сетевого трафика». Угроза выявления паролей. 38 Глава 3. Разработка ИС 3.1. Настройка сервера Ruby on Rails – веб-ориентированная среда разработки с открытым исходным кодом, оптимизированная для удобства программирования и устойчивой производительности [2]. Разработчики советуют для развертывания использовать системы семейства *nix. Под требуемые задачи был выделен сервер под управлением операционной системы CentOS 6.4. Для разработки корпоративного портала в соответствии с требованиями под управлением фреймворка Ruby on Rails на выделенном сервере необходимо сделать следующее: Настроить доступ к серверу через SSH. Установить и настроить веб-сервер Apache, Ruby version manager, Ruby 2.0.0, Rails 4, модуль Phusion Passenger для интеграции с сервером Apache, расширение FreeTDS для подключения к Microsoft SQL Server, гемы для Ruby on Rails. Настроить Kerberos-аутентификацию и HTTPS на веб-сервере. SSH-сервер (OpenSSH) позволяет производить удалённое управление операционной системой, а также копирование файлов между компьютерами по шифрованному каналу связи. Доступ к серверу по SSH является неотъемлемой частью администрирования. Однако шифрованность протокола SSH не избавляет удаленное администрирование от недостатков. Поэтому после установки 39 системы желательно принять меры, чтобы максимально возможно обезопасить себя от злоумышленников. Для этого необходимо сделать: Создать пользователя с ограниченными правами, все действия проводить из-под него. Запретить вход под учетной записью root. Блокировать попытки перебора паролей. Для разработки требуемого функционала, используя фреймворк Ruby on Rails, на сервер необходимо было установить и настроить следующие компоненты: веб-сервер Apache, Ruby version manager, Ruby 2.0.0, Rails 4, модуль Phusion Passenger для интеграции с сервером Apache, расширение FreeTDS для подключения к Microsoft SQL Server. Для разработки компонентов портала пришлось установить следующие расширения: gem "tiny_tds"; gem "activerecord-sqlserver-adapter"; gem "rails_admin"; gem "devise"; gem "cancan"; gem "rolify"; gem "ckeditor"; gem "russian"; gem "kaminari"; gem "carrierwave"; gem "rmagick"; 40 gem "mini_magick"; gem "ancestry"; gem 'sidekiq'; gem "pdfkit"; gem 'axlsx'; gem 'axlsx_rails'; gem 'petrovich'. Настроив все это и удостоверившись, что сайты, созданные с помощью Ruby on запускаются, Rails аутентификацию к нужно веб-серверу, было используя настроить данные прозрачную учетной записи вошедшего в систему пользователя Windows, с помощью Kerberos аутентификации. Для настройки Kerberos пришлось сделать следующее: Выполнить начальную синхронизацию времени с контроллером домена. Настроить конфигурационный файл /etc/krb5.conf [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = RNTC.RU dns_lookup_realm = false dns_lookup_kdc = false 41 ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] RNTC.RU = { kdc = PLUTON.RNTC.RU admin_server = PLUTON.RNTC.RU } [domain_realm] .rntc.ru = RNTC.RU rntc.ru = RNTC.RU [appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false } Создать аккаунт сервера в Active Directory и связать его с участнком сервиса в контроллере домена, для этого пришлось установить и настроить samba и ввести сервер в домен Windows. Создать файл keytab, добавить ключ участника “HTTP” в keytab. 42 После настройки Kerberos на сервере нужно было настроить модуль mod_auth_kerb для веб-сервера Apache. Конфиг Apache: <VirtualHost _default_:80> RailsEnv development ServerName infoportal DocumentRoot path <Location> AuthType Kerberos AuthName "Welcome to Infoportal!" KrbMethodNegotiate On KrbSaveCredentials On KrbMethodK5Passwd On KrbVerifyKDC On KrbAuthRealms RNTC.RU Krb5KeyTab /etc/httpd/httpd.keytab KrbServiceName HTTP/infoportal.rntc.ru@RNTC.RU require valid-user </Location> </VirtualHost> После этого заработала прозрачная аутентификация на веб-сервер через браузер Internet Explorer, для других браузеров нужно сделать дополнительную настройку. На портале будет несколько особо защищенных зон (сервис расчетных листов, диалоги с пользователями, администраторский интерфейс), в этих зонах нужно будет обеспечить безопасное соединение через HTTPS. Теперь нужно настроить ssl на веб-сервер. Для этого пришлось выполнить следующее: 43 Установить библиотеку OpenSSL и интерфейс apache для OpenSSL. Создать запрос на сертификат у центра сертификации внутри организации. Сконфигурировать интерфейс apache для OpenSSL. Конфигурация интерфейса apache для OpenSSL: <VirtualHost _default_:443> RailsEnv development ServerName infoportal DocumentRoot path ErrorLog logs/ssl_error_log TransferLog logs/ssl_access_log LogLevel warn SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW SSLCertificateFile /etc/pki/tls/certs/ca.crt SSLCertificateKeyFile /etc/pki/tls/private/infoportal.key <Files ~ "\.(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> <Directory "/var/www/cgi-bin"> SSLOptions +StdEnvVars </Directory> </VirtualHost> 44 3.2. Проектирование базы данных На основании требуемого функционала была спроектирована следующая структура базы данных. (см. Приложение 2 Рисунок 1. Структура БД) Подключение к базе данных под управлением Microsoft SQL Server 2008 R2 осуществляется из-под выделенного логина под общие действия на портале. Разграничение прав доступа делается только на стороне клиента, в связи с тем, что через Apache нет возможности произвести Windows аутентификацию на сервере базы данных и поэтому нет возможности применить технологию доступа на уровне строк в зависимости от подключенного к серверу базы данных пользователя. Поэтому был предпринят рад мер: Права на базу данных, выделенные для логина жестко ограничиваются требованиям, необходимым для исполнения функций пользователей на портале. Логин и пароль хранятся в конфигурационных файлах приложения. Доступ на уровне строк реализован в приложении. Список действий, возможных под логином подключения к базе данных: Создание, изменение, удаление таких объектов, как: новости, объявления, изображения, мероприятия, сообщения, диалоги, информационные страницы и добавление записей вспомогательные таблицы, связанные с перечисленными. в 45 Присвоение ролей пользователям. Изменение следующих полей пользователя: пароль, соль, ссылка для восстановления пароля, время запроса на восстановление, контрольный вопрос, ответ на вопрос, количество подключений, время и ip-адрес текущего и последнего подключения, последняя активность в приложении. Внесение основных данных о пользователе или изменение делается вручную через другой логин к серверу базы данных. Первоначальная загрузка списка пользователей осуществлялась через выгрузку из кадровой базы данных в excel файл и занесением информации в созданную базу данных. Выгрузка состояла из следующих полей: фамилия; имя; отчество; подразделение; логин в домене; адрес корпоративной почты; рабочее местоположение; рабочий номер телефона; табельный номер. 46 3.3. Идентификация и аутентификация пользователей Вход на корпоративный портал происходит для сотрудника незаметно, если он использует браузер Internet Explorer, или совершил дополнительные настройки для других браузеров, в другом случае ему придется ввести логин и пароль своей учетной записи в домене. Аутентификация реализована через протокол Kerberos. Описание приводится в пункте 3.1. настройки Kerberos-аутентификации Настройка сервера. В приложении, перед каждым действием проверяется установлен ли текущий пользователь. Если в сессии ничего нет, то идентификация происходит на основе аутентифицировавшегося значения на учетной веб-сервере, в записи базе пользователя, данных находится соответствующий пользователь и записывается значение в сессию. def set_current_user unless current_user user = User.find_or_create_by_username(request.env['REMOTE_USER']) sign_in(user) end end 47 3.4. Разграничение прав доступа Разграничение прав в приложении реализован с помощью библиотеки авторизации для Ruby on Rails, которая ограничивает права пользователя на ресурсы. Библиотека называется cancan. Для назначения прав доступа пользователей на ресурсы создаются роли, которые назначаются потом пользователям, и специальная модель, называемая ability, в ней указывается на какие ресурсы, какие права (manage, create, read, update, destroy) имеет роль. Можно настроить и уникальные права для пользователей, например, только пользователь, создавший запись, сможет ее удалить. Роли назначаются пользователям либо вручную, администраторский интерфейс. Пример модели разграничения прав, представлен в (см. либо через 48 ПРИЛОЖЕНИЕ 3)где: Обычный пользователь имеет доступ только на чтение ко всем объектам системы, но не имеет доступа к администраторской части. Администратор может управлять всем и имеет доступ к администраторской части приложения. Пользователь, имеющий роль newsmaker может управлять полностью моделью новостей, т.е. создавать, изменять, удалять записи. Может создавать изображения, то есть загружать их, удалять созданные им же изображения. Роли adsmaker, gallerymaker pagemaker, могут eventmaker, управлять моделями documentmaker, объявлений, информационных страниц, мероприятий, библиотекой и галереей соответственно. Проверка прав доступа текущего пользователя на объект происходит перед отмеченными действиями контроллера. authorize_resource – обозначение этой функции в начале кода контроллера означает, что будет вызываться проверка на соответствие прав доступа текущего пользователя к объекту в каждом методе контроллера. 49 3.5. Реализация общих разделов (Новости, объявления, мероприятия, информационные страницы, галерея, библиотека) На страницах новостей, объявлений, мероприятий и информационных страниц сценарий поведения пользователя схожий, в зависимости от прав он может: только добавлять, просматривать изменять, содержимое удалять (обычный содержимое пользователь), (привелигированный пользователь). Для обычного пользователя все просто, он переходит по страницам и может посмотреть новости, объявления, текущие и запланированные мероприятия, просмотреть фотографии, но ничего изменить не может. Вся информация хранится в базе данных и перед тем как отобразить все это пользователю, содержимое проходит через функцию экранирования вывода, что является встроенной возможностью фреймворка. Для пользователя, у которого есть возможность создавать, изменять новости, объявления, и т.д., необходимо осуществить фильтрацию всего пользовательского ввода, в связи с тем, что пользователь целенаправленно может внедрить исполняемый код. Наиболее распространенным языком для внедрения кода является клиентский скриптовый язык JavaScript. В фреймворке Ruby on Rails встроена автоматическая фильтрация пользовательского ввода. Например, введенное пользователем <script>alert(‘Hello’)</script> в содержимое новости, при сохранении в базу данных запишется как &lt;script&gt;alert(&#39;Hello!&#39;)&lt;/script&gt;. При отображении просто пользователю, станет выборке и строкой 50 <script>alert(‘Hello’)</script>, которая, естественно, не исполнится, а просто отобразится. Присутствует возможность пользователю загружать изображения в галерею, для логотипа новостей, или прикреплять к новости. Необходимо фильтровать имена файлов, в связи с тем, что злоумышленник может использовать злонамеренное имя файла для перезаписи любого файла на сервере. Эта проблема решена путем присваивания фотографиям собственных имен при загрузке на сервер. def filename "#{secure_token}.#{file.extension}" if original_filename.present? End def secure_token var = :"@#{mounted_as}_secure_token" model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.uuid) end Реализованный функционал можно посмотреть в Приложении 2 на следующих рисунках: Рисунок 2. Новости; Рисунок 3. Создание новости; Рисунок 4. Объявления; Рисунок 5. Информационная страница; Рисунок 6. Мероприятия; Рисунок 7. Создание мероприятия; 51 Рисунок 8. Организационная структура; Рисунок 9. Телефонная книга; Рисунок 10. Галерея; Рисунок 11. Библиотека. 52 3.6. Реализация раздела «Предоставление расчетного листа» Доступ к странице, предоставляющей информацию о расчетном листе сотрудника, проходит по следующему сценарию: 1. Пользователь должен пройти дополнительную аутентификацию, для этого он должен быть зарегистрирован в системе. (см. Приложение 2 Рисунок 12. Вход на сервис расчетных листов) 2. При успешной аутентификации ему отображается его расчетный лист и график выплат за выбранный период. (см. Приложение 2 Рисунок 13. Сервис расчетных листов) При попытке входа пользователя на страницу расчетного листа происходит проверка на наличие сессии конкретного пользователя, в случае если сессии нет, то происходит переадресация на страницу аутентификации/регистрации/восстановления пароля. def check_access_to_paysheet unless current_user.id == session[:user_id] redirect_to login_url end end В момент использования пользователем услуги предоставления расчетного листа злоумышленнику может быть интересным «прослушивание» сетевого трафика. Заинтересовать его может пароль пользователя для доступа к листу, собственно информация, содержащаяся в листе, поэтому во время аутентификации и использования услугой расчетного листа необходимо использовать защищенное соединение. 53 При переходе пользователя на страницу для аутентификации/регистрации/восстановления пароля создается защищенное соединение, используя сертификат безопасности, подписанный центром сертификации в организации. В контроллере вызывается метод redirect_to_https, производящий переадресацию на протокол и https блокируются вызовы методов redirect_to_http, являющийся обратным методу redirect_to_https. skip_before_filter :redirect_to_http before_filter :redirect_to_https При регистрации пользователя происходит проверка на наличие согласия пользователя с условиями предоставления услуги: «Согласны ли вы использовать данный сервис для получения «Расчетного листка» через портал Филиала ООО «ЛУКОЙЛ – Инжиниринг» «КогалымНИПИнефть» в г. Тюмени?», необходимое присутствие пароля, контрольного вопроса и ответа на него, также минимальная длина, равная 6 символам и подтверждение пароля. validates :agree, acceptance: true, allow_nil: false validates :password, :question, :answer, presence: true validates :password, length: { minimum: 6 } validates :password, confirmation: true Если проверка пройдена успешно, то происходит проверка на то, имеется ли уже пароль у пользователя, в случае если имеется, генерируется ошибка и пользователю не удается зарегистрироваться. Если нет пароля, то введенный пароль преобразуется с помощью функции SHA-256 с добавлением соли. Соль генерируется c помощью применения хэш-функции 54 над текущим временем и случайным числом. Полученное преобразование пароля и соль пишутся в базу данных, в таблицу users, в поля encrypted_password и salt, соответственно. def set_password if password.present? if encrypted_password.nil? || encrypted_password.empty? self.salt = Digest::SHA256.hexdigest((Time.now + rand(10000)).to_s) self.encrypted_password = Digest::SHA256.hexdigest("#{ salt }#{ password }") else errors.add(:encrypted_password, "У вас уже установлен пароль") errors.blank? end end end Функция входа на сервис представляет собой сравнение преобразования от введенного пользователем пароля с имеющимся в базе данных. def authenticate(password) if encrypted_password == Digest::SHA256.hexdigest("#{ salt }#{ password }") self else nil end end 55 После успешного входа на сервис, создается сессия, в нее пишется идентификатор текущего пользователя. if current_user.authenticate(params[:password]) session[:user_id] = current_user.id format.html { redirect_to paysheet_path } В случае если пользователь забыл пароль, он может воспользоваться услугой восстановления пароля, ему необходимо будет ввести ответ на вопрос. В случае совпадения введенного ответа со значением, хранящимся в базе данных, будет сгенерирована ссылка, перейдя по которой сбросится пароль. Ссылка отправляется на корпоративную почту. def send_reset_password self.reset_password_token = SecureRandom.urlsafe_base64 self.reset_password_sent_at = Time.zone.now save!(validate: false) Notifier.delay.reset_password(id) end При переходе пользователя по этой ссылке проверяется соответствие ссылки со значением reset_password_token текущего пользователя. На возможность восстановления дается 1 день, после генерации ссылки. if current_user.reset_password_token == params[:id] && params[:id] != nil if current_user.reset_password_sent_at < 1.day.ago flash[:alert] = "Время, отведенное для сброса пароля, вышло" redirect_to controller: 'sessions', action:'new', formType: 1 else current_user.reset_password 56 flash[:success] = "Пароль успешно сброшен" redirect_to controller: 'sessions', action:'new', formType: 2 end else raise ActionController::RoutingError.new('Not Found') end Если вход осуществлен на сервис расчетных листов, создается подключение к другой базе данных, в которой хранятся сведения о расчетных листах пользователя. Для подключения к этой базе данных используется выделенный логин, имеющий право только на чтение. В эту базу данных данные экспортируются уже из бухгалтерской базы данных. В качестве параметров запроса используется табельный номер сотрудника и период времени. Отправляемые параметры фильтруются регулярным выражением и экранируются. Возвращаемые данные уже отображаются пользователю. К критичным свойствам информации можно отнести только конфиденциальность, потому как изменение целостности и доступности информации не принесет никакого толка нарушившему, пользователю отобразится измененный, или не отобразится вовсе его расчетный лист, но он всегда может напрямую обратиться в Бухгалтерию, этот сервис сделан лишь для удобства пользователям. 57 3.7. Реализация администраторской части портала Администраторская часть приложения предоставляет следующий функционал: Возможность создавать, изменять, удалять следующие объекты системы: новости, объявления, мероприятия, информационные страницы. Присвоение ролей пользователям. Просмотр активности пользователей (количество подключений, время и ip-адрес текущего и прошлого подключения). Для доступа в администраторский интерфейс пользователь должен обладать ролью admin и пройти дополнительную аутентификацию, точно такую же, как и в сервисе расчетных листов. Ему будет выдана сессия и он сможет войти, после перехода в другую часть сайта сессия обнуляется. Для реализации администраторского интерфейса было использовано популярное расширение RailsAdmin и настроено под требуемый функционал. (см. Приложение 2 Рисунок 17. Администраторская часть) 58 3.8. Реализация раздела «Личная переписка» Пользователям доступна возможность общения между собой на портале посредством личной переписки. Для этого пользователь переходит в соответствующий раздел «Сообщения», видит список диалогов, в которых он участвует. Если нужного диалога нет, то он нажимает на кнопку «Создать сообщение», выбирает адресатов, вводит содержимое и нажимает «Отправить». (см. Приложение 2 Рисунок 15. Список диалогов, Рисунок 16. Диалог с пользователем) При входе в диалог и получении сообщений производится проверка, является ли этот пользователь участником диалога, если нет, то генерируется ошибка «Not Found». def check_acess begin @dialog = Dialog.find(params[:id]) rescue raise ActionController::RoutingError.new('Not Found') end unless @dialog.include_user? current_user raise ActionController::RoutingError.new('Not Found') end end Для того чтобы злоумышленник не смог нарушить конфиденциальность переписки путем анализа сетевого трафика, весь процесс переписки осуществляется через защищенное соединение, используя сертификат организации. безопасности, подписанный центром сертификации в 59 3.9. Меры защиты, примененные при разработке компонент системы В ходе разработки ИС были применены следующие меры защиты. Сервер: Идентификация и аутентификация пользователей. Доступ по ssh и sftp. Через ssh нет возможности зайти через учетную запись root. Блокирование попыток перебора пароля. Создан пользователь с ограниченными правами с домашней директорией. Запуск веб-сервера осуществляется из-под созданного пользователя. Проект располагается в директории пользователя. Kerberos-аутентификация к веб-серверу. Защищенное соединение к веб-серверу, используя сертификат, подписанный центром сертификации организации. База данных: Идентификация и аутентификация пользователей. Логин подключения к базе данных находится в конфигурационных файлах приложения. Для логина подключения выделены минимально необходимые права. Пароли пользователей хранятся в виде хэша с содержанием соли. 60 Приложение: Идентификация и аутентификация пользователей. Разграничение прав доступа. Дополнительная аутентификация в особо важных частях портала (предоставление расчетного листа, администраторская часть). Логирование действий пользователя. Фиксирование времени, ip-адреса вошедшего пользователя. Фильтрация пользовательского ввода и вывода. Включение токена безопасности в POST-запросы. Доступ к конфиденциальной информации через защищенное соединение. На основе анализа угроз были определены следующие актуальные угрозы: Угроза НСД с применением стандартных функций операционной системы, СУБД, прикладной программы. Угроза «Анализа сетевого трафика». Угроза выявления паролей. Меры защиты для угрозы НСД с применением стандартных функций операционной системы, СУБД, прикладной программы: Идентификация и аутентификация пользователей при входе в СУБД и на сервер. Идентификация и аутентификация пользователей при входе в портал на основе учетной записи Windows. Разграничение прав доступа на портале. 61 Фильтрация пользовательского ввода и вывода. Дополнительная аутентификация к особо важным частям портала. Меры защиты для угрозы «Анализа сетевого трафика»: Доступ к конфиденциальным данным на портале через защищенное соединение. Меры защиты для угрозы выявления паролей: Блокирование перебора паролей при попытках доступа к серверу через ssh. Блокирование перебора паролей на портале для доступа в особо важную часть. Использование защищенного соединения против перехвата пароля по сети. Пароли пользователей хранятся в виде хэша с содержанием соли. 62 Заключение В ходе дипломной работы было сделано: Выбраны средства разработки. Проведен анализ угроз, выявлены основные меры защиты, определены актуальные угрозы. Разработаны требуемые компоненты системы с необходимыми мерами защиты, определенными на основе анализа угроз. Таким образом, были решены все поставленные задачи. Следовательно, можно сделать вывод о том, что цель дипломной работы достигнута. Результатом работы стал разработанный корпоративный портал, позволяющий сотрудникам: Получать информацию о новостях, объявлениях, мероприятиях внутри организации. Просматривать галерею фотографий. Изучать загруженные в библиотеку материалы. Искать сотрудников с помощью телефонной книги и организационной структуры. Получать информацию о доходах с помощью услуги предоставления расчетного листа. Заказывать справку 2-НДФЛ. Общаться с сотрудниками посредством личной переписки. Разработанный существующую корпоративный систему Филиала «КогалымНИПИнефть» в г. Тюмени. портал ООО успешно внедрен в «ЛУКОЙЛ-Инжиниринг» 63 В дальнейшем планируется доработка портала. Добавление многих новых функций, позволяющих автоматизировать рабочий процесс, например: Контроль исполнения поручений. Статистика использования лицензий ПО. Подача заявки на закупку вычислительной и организационной техники. Подача заявления на отпуск. 64 Список литературы 1. Ruby [Электронный ресурс]. URL: http://ru.wikibooks.org/wiki/Ruby (Дата обращения: 10.12.2013) 2. Ruby on Rails. Веб-разработка с удовольствием [Электронный ресурс]. URL: http://www.rubyonrails.ru/ (Дата обращения: 06.09.2013) 3. Microsoft SQL Server 2008 R2 [Электронный ресурс]. URL: http://www.microsoft.com/ru/ru/isv/development/sql.aspx (Дата обращения: 10.12.2013) 4. Что такое CentOS? [Электронный ресурс]. URL: http://centos.name/ (Дата обращения: 12.12.2013) 5. CentOS [Электронный ресурс]. URL: http://ru.wikipedia.org/wiki/CentOS (Дата обращения: 12.12.2013) 6. Что такое Apache сервер? [Электронный ресурс]. URL: http://sohosting.info/chto-takoe-apache.html (Дата обращения: 12.12.2013) 7. Kerberos [Электронный ресурс]. URL: http://ru.wikipedia.org/wiki/Kerberos (Дата обращения: 12.12.2013) 8. Принципы аутентификации по протоколу Kerberos [Электронный ресурс]. URL: http://itband.ru/2010/12/kerberos1/ (Дата обращения: 26.01.2014) 9. Информационная безопасность: протокол SSL [Электронный ресурс]. URL: http://ethnohosting.com/useful-article1.ru.html (Дата обращения: 26.01.2014) 10.MVC Framework: большое введение для начинающих [Электронный ресурс]. URL: http://habrahabr.ru/post/49718/ mvc (Дата обращения: 17.09.2013) 65 11.Брюс Тейт, Курт Ниббс. Ruby on Rails. Быстрая веб-разработка. БХВ-Петербург, 2008г. 224 с. 12.Оби Фернандес. Путь Rails. Подробное руководство по созданию приложений в среде Ruby on Rails. Символ-Плюс, 2009 г. 768 с. 13.Дэвид Хейнмейер Ханссон. Гибкая разработка веб-приложений в среде Rails. Питер, 2012 г. 464 с. 14.Guide to Ruby [Электронный ресурс]. URL: http://www.rubyinside.com/media/poignant-guide.pdf (Дата обращения: 06.09.2013) 15. Федеральный закон от 27.07.2006 N 152-ФЗ (ред. от 23.07.2013) "О персональных данных" 16.Постановление Правительства РФ от 01.11.2012 N 1119 "Об утверждении требований к защите персональных данных при их обработке в информационных системах персональных данных" 17.Базовая модель угроз безопасности персональных данных при их обработке в информационных системах персональных данных (выписка). ФСТЭК России, 2008 г. 18.Методика определения актуальных угроз безопасности персональных данных при их обработке в информационных системах персональных данных. ФСТЭК России, 2008 г. Приложения ПРИЛОЖЕНИЕ 1 СОСТАВ И СОДЕРЖАНИЕ МЕР ПО ОБЕСПЕЧЕНИЮ БЕЗОПАСНОСТИ ПЕРСОНАЛЬНЫХ ДАННЫХ, НЕОБХОДИМЫХ ДЛЯ ОБЕСПЕЧЕНИЯ КАЖДОГО ИЗ УРОВНЕЙ ЗАЩИЩЕННОСТИ ПЕРСОНАЛЬНЫХ ДАННЫХ Условное Содержание мер по обеспечению безопасности Уровни защищенности персональных данных персональных данных обозначение и номер 4 3 2 1 меры I. Идентификация и аутентификация субъектов доступа и объектов доступа (ИАФ) ИАФ.1 Идентификация пользователей, и аутентификация + + + + + + являющихся работниками оператора ИАФ.2 Идентификация и аутентификация том устройств, в числе стационарных, мобильных и портативных ИАФ.3 Управление идентификаторами, в том числе создание, + + + + + + + + + + + + + + + + + + присвоение, уничтожение идентификаторов ИАФ.4 Управление средствами аутентификации, в том числе хранение, выдача, блокирование средств случае инициализация, аутентификации и принятие мер в утраты и (или) компрометации средств аутентификации ИАФ.5 Защита обратной связи при вводе аутентификационной информации ИАФ.6 Идентификация и аутентификация пользователей, не являющихся (внешних работниками оператора пользователей) II. Управление доступом субъектов доступа к объектам доступа (УПД) УПД.1 Управление (заведение, активация, блокирование и уничтожение) учетными записями пользователей, в том числе внешних пользователей + + УПД.2 Реализация необходимых (дискреционный, методов мандатный, ролевой или иной метод), (чтение, запись, правил выполнение или + + + + иной + + + + + + + + + + + + + + + + типов тип) и разграничения доступа УПД.3 Управление контроль (фильтрация, маршрутизация, соединений, однонаправленная передача и иные способы управления) между информационными потоками устройствами, сегментами информационной а системы, также между информационными системами УПД.4 Разделение полномочий пользователей, (ролей) администраторов обеспечивающих лиц, и функционирование информационной системы УПД.5 Назначение минимально необходимых прав и привилегий пользователям, администраторам лицам, обеспечивающим информационной и функционирование системы УПД.6 Ограничение неуспешных попыток входа в информационную информационной систему (доступа к системе) УПД.7 Предупреждение пользователя при его входе в информационную систему о том, что информационной в системе реализованы меры по обеспечению безопасности персональных данных, и соблюдения установленных обработки о необходимости оператором правил персональных данных УПД.8 Оповещение пользователя после успешного входа предыдущем входе в информационную систему в о его информационную систему УПД.9 Ограничение числа параллельных сеансов доступа для каждой учетной информационной записи пользователя Блокирование информационную сеанса доступа систему после бездействия установленного системы УПД.10 в + + + + + + + + + + + + + + + + + + + + + + + + времени (неактивности) пользователя или по его запросу УПД.11 Разрешение (запрет) пользователей, действий разрешенных до идентификации и аутентификации УПД.12 Поддержка и безопасности (меток в сохранение безопасности), атрибутов связанных с информацией процессе ее хранения и обработки УПД.13 Реализация защищенного удаленного доступа субъектов доступа внешние к объектам доступа через информационно-телекоммуникационные сети УПД.14 Регламентация и контроль использования в информационной беспроводного системе технологий доступа УПД.15 Регламентация и контроль использования в информационной системе мобильных технических средств УПД.16 Управление взаимодействием информационными системами (внешние сторонних с организаций информационные системы) УПД.17 Обеспечение средств доверенной загрузки вычислительной техники III. Ограничение программной среды (ОПС) ОПС.1 Управление компонентов запуском (обращениями) программного обеспечения, в определение том числе запускаемых параметров запуска запуском компонентов, компонентов, настройка контроль за компонентов программного обеспечения ОПС.2 Управление установкой компонентов (инсталляцией) программного обеспечения, в определение том компонентов, настройка установке, параметров за подлежащих установки + + числе компонентов, контроль установкой компонентов программного обеспечения ОПС.3 Установка (инсталляция) только разрешенного + к использованию программного обеспечения и его (или) компонентов ОПС.4 Управление временными файлами, в том числе запрет, разрешение, удаление перенаправление записи, временных файлов IV. Защита машинных носителей персональных данных (ЗНИ) ЗНИ.1 ЗНИ.2 Учет машинных носителей персональных данных Управление носителям доступом к машинным персональных данных ЗНИ.3 Контроль носителей перемещения машинных персональных данных за пределы контролируемой зоны ЗНИ.4 Исключение возможности несанкционированного ознакомления данных, хранящихся (или) с содержанием на машинных персональных носителях, и использования носителей персональных данных иных в информационных системах ЗНИ.5 Контроль использования интерфейсов ввода (вывода) информации на машинные носители персональных данных ЗНИ.6 Контроль ввода машинные (вывода) информации на + + + + носители персональных данных ЗНИ.7 Контроль носителей подключения машинных персональных данных ЗНИ.8 Уничтожение обезличивание (стирание) персональных данных на их передаче сторонние между или машинных носителях пользователями, организации для также ремонта или + + + + + + + + + + + + + + + + + + + при в утилизации, а контроль уничтожения (стирания) или обезличивания V. Регистрация событий безопасности (РСБ) РСБ.1 Определение подлежащих событий безопасности, регистрации, и сроков их хранения РСБ.2 Определение состава и содержания информации о событиях безопасности, подлежащих регистрации РСБ.3 Сбор, запись событиях безопасности времени и в хранение течение информации о установленного хранения РСБ.4 Реагирование событий на сбои при регистрации безопасности, в том числе аппаратные программные и ошибки, и информации сбои в механизмах сбора достижение предела или переполнения объема (емкости) памяти РСБ.5 Мониторинг результатов (просмотр, анализ) регистрации событий безопасности и на реагирование них РСБ.6 Генерирование (или) временных синхронизация системного информационной меток времени и в системе РСБ.7 Защита информации о событиях безопасности VI. Антивирусная защита (АВЗ) + + АВЗ.1 АВЗ.2 Реализация антивирусной защиты Обновление вредоносных базы данных признаков + + + + + + + + компьютерных программ (вирусов) VII. Обнаружение вторжений (СОВ) СОВ.1 Обнаружение вторжений + + СОВ.2 Обновление базы решающих правил + + + + + + + + + + + + + + + + VIII. Контроль (анализ) защищенности персональных данных (АНЗ) АНЗ.1 Выявление, анализ информационной уязвимостей системы и оперативное выявленных устранение вновь уязвимостей АНЗ.2 Контроль установки программного обновлений обеспечения, программного обновление включая + обеспечения средств защиты информации АНЗ.3 Контроль работоспособности, параметров настройки и правильности программного функционирования обеспечения и средств защиты информации АНЗ.4 Контроль состава технических средств, программного обеспечения и средств защиты информации АНЗ.5 Контроль паролей правил генерации и смены пользователей, заведения и удаления учетных записей пользователей, разграничения реализации правил доступа, полномочий пользователей информационной в системе IX. Обеспечение целостности информационной системы и персональных данных (ОЦЛ) ОЦЛ.1 Контроль целостности обеспечения, включая защиты программное программного обеспечение средств информации ОЦЛ.2 Контроль данных, целостности персональных содержащихся в базах данных информационной системы + + ОЦЛ.3 Обеспечение восстановления возможности программного программное обеспечения, обеспечение при средств включая защиты информации, возникновении нештатных ситуаций ОЦЛ.4 Обнаружение и реагирование на поступление в информационную систему электронных незапрашиваемых сообщений (писем, документов) и иной информации, не относящихся к информационной функционированию системы (защита от спама) ОЦЛ.5 Контроль содержания информации, передаваемой из информационной системы (контейнерный, основанный на свойствах объекта контентный, основанный передаче на доступа, поиске и (или) запрещенной к информации с использованием сигнатур, масок иных методов), передачи и исключение и неправомерной информации из информационной системы ОЦЛ.6 Ограничение прав пользователей по вводу информации в информационную систему ОЦЛ.7 Контроль точности, полноты и правильности данных, вводимых в информационную систему ОЦЛ.8 Контроль ошибочных действий пользователей по вводу и и (или) передаче персональных данных предупреждение пользователей об ошибочных действиях X. Обеспечение доступности персональных данных (ОДТ) ОДТ.1 Использование отказоустойчивых технических средств ОДТ.2 Резервирование технических программного обеспечения, каналов средств передачи средств, информации, + + обеспечения функционирования информационной системы ОДТ.3 Контроль безотказного функционирования технических средств, отказов обнаружение функционирования, восстановлению и + локализация принятие мер по отказавших средств и их тестирование ОДТ.4 Периодическое резервное персональных копирование данных на резервные машинные персональных + + + + носители данных ОДТ.5 Обеспечение восстановления возможности персональных данных с резервных носителей персональных течение данных (резервных машинных копий) в установленного временного интервала XI. Защита среды виртуализации (ЗСВ) ЗСВ.1 Идентификация и аутентификация субъектов доступа + + + + + + + + + + + и объектов доступа в виртуальной инфраструктуре, в том числе администраторов средствами управления виртуализации ЗСВ.2 Управление доступом субъектов доступа объектам доступа в виртуальной инфраструктуре, числе к в том внутри виртуальных машин ЗСВ.3 Регистрация виртуальной событий безопасности в инфраструктуре ЗСВ.4 Управление контроль соединения, потоками (фильтрация, маршрутизация, однонаправленная информации виртуальной между инфраструктуры, а виртуальной инфраструктуры передача) компонентами также по периметру ЗСВ.5 Доверенная загрузка виртуализации, серверов виртуальной машины (контейнера), серверов управления виртуализацией ЗСВ.6 Управление машин перемещением виртуальных + + + + + + + + + + + + + + + (контейнеров) и обрабатываемых на них данных ЗСВ.7 Контроль целостности виртуальной инфраструктуры и ее конфигураций ЗСВ.8 Резервное копирование резервирование технических обеспечения средств, данных, программного виртуальной инфраструктуры, а связи также каналов внутри виртуальной инфраструктуры ЗСВ.9 Реализация и управление антивирусной защитой в виртуальной инфраструктуре ЗСВ.10 Разбиение виртуальной инфраструктуры сегменты (сегментирование для обработки отдельным виртуальной персональных на инфраструктуры) данных пользователем и (или) группой пользователей XII. Защита технических средств (ЗТС) ЗТС.1 Защита информации, техническими обрабатываемой средствами, от ее утечки по техническим каналам ЗТС.2 Организация пределах контролируемой которой постоянно стационарные зоны, размещаются технические средства, обрабатывающие и средства средства защиты в информации, а информацию, также обеспечения функционирования ЗТС.3 Контроль и управление физическим доступом к техническим средствам, средствам защиты информации, средствам обеспечения функционирования, в а также + помещения и сооружения, в которых установлены, они исключающие несанкционированный физический доступ к средствам защиты обработки информации, средствам информации и средствам обеспечения функционирования информационной системы, в помещения и сооружения, в которых они установлены ЗТС.4 Размещение (отображения) устройств вывода информации, исключающее несанкционированный + + + + ее просмотр ЗТС.5 Защита от (воздействий внешних окружающей среды, электроснабжения, воздействий нестабильности кондиционирования и иных внешних факторов) XIII. Защита информационной системы, ее средств, систем связи и передачи данных (3ИС) ЗИС.1 Разделение в информационной системе функций + по управлению (администрированию) информационной системой, системой управлению защиты персональных обработке (администрированию) данных, персональных данных и информационной иных функций по функций системы ЗИС.2 Предотвращение задержки или прерывания выполнения процессов с высоким приоритетом со стороны процессов с низким приоритетом ЗИС.3 Обеспечение защиты персональных данных от раскрытия, модификации и навязывания ложной (ввода информации) при ее передаче (подготовке к передаче) по каналам пределы связи, имеющим выход за + + + + контролируемой беспроводным зоны, в том числе каналам связи ЗИС.4 Обеспечение между доверенных канала, администратором, пользователем и защиты маршрута информации (функциями защиты средствами безопасности средств информации) ЗИС.5 Запрет несанкционированной активации видеокамер, периферийных микрофонов удаленной и иных устройств, которые могут активироваться удаленно, и оповещение таких пользователей об активации устройств ЗИС.6 Передача атрибутов и безопасности с контроль персональными иными (меток целостности безопасности), данными, при связанных обмене ими с информационными системами ЗИС.7 Контроль исключение санкционированного и несанкционированного технологий использования мобильного кода, в том событий, числе связанных с мобильного использованием кода, их анализ нарушения, связанные с мобильного и регистрация технологий реагирование использованием на технологий кода ЗИС.8 Контроль исключение санкционированного и несанкционированного технологий использования передачи речи, событий, числе в том регистрация связанных с использованием технологий передачи речи, их анализ и реагирование на нарушения, с связанные использованием технологий передачи речи ЗИС.9 Контроль исключение санкционированной и несанкционированной передачи видеоинформации, в том числе регистрация передачей видеоинформации, на событий, их связанных анализ и с реагирование нарушения, связанные с передачей видеоинформации ЗИС.10 Подтверждение происхождения источника информации, получаемой в процессе определения сетевых адресов по сетевым по именам или определения сетевых имен сетевым адресам ЗИС.11 Обеспечение подлинности сетевых соединений (сеансов взаимодействия), в том числе для защиты подмены + + + + от сетевых устройств и сервисов ЗИС.12 Исключение возможности пользователем факта отправки другому отрицания персональных данных пользователю ЗИС.13 Исключение возможности пользователем факта получения другого отрицания персональных данных от пользователя ЗИС.14 Использование устройств терминального доступа для обработки персональных данных ЗИС.15 Защита архивных настройки файлов, параметров средств защиты информации и программного обеспечения и иных данных, не подлежащих процессе изменению обработки персональных данных ЗИС.16 Выявление, анализ и блокирование в информационной в системе скрытых каналов передачи информации в обход реализованных мер сетевых или внутри разрешенных протоколов ЗИС.17 Разбиение сегменты информационной (сегментирование и обеспечение сегментов системы на информационной защиты + + + + + + + + + + + + системы) периметров информационной системы ЗИС.18 Обеспечение программного загрузки обеспечения с персональных и исполнения машинных данных, доступных контроль носителей только для чтения, и целостности данного программного обеспечения ЗИС.19 Изоляция процессов (выполнение программ) в выделенной области памяти ЗИС.20 Защита беспроводных соединений, применяемых + в информационной системе XIV. Выявление инцидентов и реагирование на них (ИНЦ) ИНЦ.1 Определение выявление лиц, ответственных за инцидентов и реагирование на них ИНЦ.2 Обнаружение, регистрация идентификация и инцидентов ИНЦ.3 Своевременное информирование лиц, ответственных за выявление о инцидентов и возникновении инцидентов системе реагирование в на них, информационной пользователями и администраторами ИНЦ.4 Анализ инцидентов, определение в источников а возникновения и причин том числе инцидентов, также оценка их последствий ИНЦ.5 Принятие мер по устранению последствий инцидентов + + ИНЦ.6 Планирование + + и принятие мер по предотвращению повторного возникновения инцидентов XV. Управление конфигурацией информационной системы и системы защиты персональных данных (УКФ) УКФ.1 Определение лиц, которым разрешены действия + + + + + + + + + + + + по внесению изменений информационной в конфигурацию системы и системы защиты персональных данных УКФ.2 Управление изменениями конфигурации информационной системы и системы защиты персональных данных УКФ.3 Анализ потенциального планируемых воздействия изменений в конфигурации и информационной системы защиты персональных обеспечение данных системы на защиты персональных данных и согласование изменений в конфигурации информационной системы с должностным лицом (работником), обеспечение ответственным за безопасности персональных данных УКФ.4 Документирование информации (данных) об изменениях в конфигурации информационной системы системы и защиты персональных данных "+" - мера по обеспечению безопасности персональных данных включена в базовый набор мер для соответствующего уровня защищенности персональных данных. Меры по обеспечению безопасности персональных данных, не обозначенные знаком "+", применяются при адаптации базового набора мер и уточнении адаптированного базового набора мер, а также при разработке компенсирующих мер по обеспечению безопасности персональных данных. ПРИЛОЖЕНИЕ 2 Рисунок 1. Структура БД Рисунок 2. Новости Рисунок 3. Создание новости Рисунок 4. Объявления Рисунок 5. Информационная страница Рисунок 6. Мероприятия Рисунок 7. Создание мероприятия Рисунок 8. Организационная структура Рисунок 9. Телефонная книга Рисунок 10. Галерея Рисунок 11. Библиотека Рисунок 12. Вход на сервис расчетных листов Рисунок 13. Сервис расчетных листов Рисунок 14. Запрос справки 2-НДФЛ Рисунок 15. Список диалогов Рисунок 16. Диалог с пользователем Рисунок 17. Администраторская часть ПРИЛОЖЕНИЕ 3 Модель разграничения прав доступа к объектам приложения. class Ability include CanCan::Ability def initialize(user) user ||= User.new if user.has_role? :admin can :manage, :all can :access, :rails_admin else can :read, :all can :get_all_events, Event can :destroy, Review, created_by: user.id end if user.has_role? :newsmaker can :manage, News can :create, Image can :destroy, :Image, created_by: user.id can :destroy, Image do |image| !image.news.nil? end end if user.has_role? :adsmaker can :manage, Advert end if user.has_role? :pagemaker can :manage, Page end if user.has_role? :eventmaker can :manage, Event can :report, Event end if user.has_role? :documentmaker can :manage, Document can :create, Attachment can :destroy, Attachment, created_by: user.id can :destroy, Attachment do |attach| !attach.document.nil? end end if user.has_role? :gallerymaker can :manage, Gallery can :create, Image can :destroy, :Image, created_by: user.id can :destroy, Image do |image| !image.news.nil? end end end end