Обеспечение информационной безопасности web-сервисов коммерческой организации
Проблемы безопасности web-сайтов как комплексных информационных систем. Учет возможных атак на уровне проектирования структуры сайта. Разработка методики проведения аудита безопасности для конкретного сайта. Реализация тестирования конкретного сайта.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 07.08.2018 |
Размер файла | 5,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Федеральное агентство связи
Федеральное государственное бюджетное образовательное учреждение высшего образования
"Поволжский государственный университет телекоммуникаций и информатики"
Факультет Телекоммуникаций и радиотехники
Направление (специальность) 10.05.02 Информационная безопасность телекоммуникационных систем
Кафедра Мультисервисных сетей и информационной безопасности
Выпускная квалификационная работа (дипломная работа)
Обеспечение информационной безопасности web-сервисов коммерческой организации
Ковалев А.В.
Самара 2017
План
Введение
1. Проблемы безопасности web-сайтов как комплексных информационных систем
1.1 Понятие об информационной безопасности
1.2 Перечень внутренних и внешних угроз
1.3 Классификация угроз по уровням
2. Методы обеспечения безопасности
2.1 Защита на уровне WEB-сервера
2.2 Учет возможных атак на уровне проектирования структуры WEB-сайта
2.3 Обеспечение безопасности кода проекта
3. Оценка уровня безопасности web-сайта
3.1 Основные сведения о тестовом сайте
3.2 Методика проведения аудита безопасности сайта
3.3 Тестирование системы на устойчивость к атакам
3.4 Рекомендации по повышению уровня безопасности
Заключение
Список использованных источников
Введение
Современный мир построен на миллиардах веб-серверов, поддерживающих работу информационных систем, обеспечивающих выполнение различных функций, начиная от торговых операций и заканчивая поддержкой электронного правительства.
Все это множество систем содержит не только персональные данные, но и финансовую информацию, которая требует защиты при хранении, передаче и преобразовании.
Перенос финансовых потоков из сферы только банковской, внедрение различных платежных систем и торговых операций, которые заключаются удаленно, расширил круг потенциальных злоумышленников посягающих на эти объекты.
Последние годы ознаменовались увеличением количества атак, которые нацелены на web-серверы. Преступность в этой сфере стала более организованной и перешла от действий студентов хакеров, утверждающихся за счет таких сомнительных успехов к вполне осмысленным действиям по массовому сбору паролей и воровству финансовой информации.
Все вышесказанное определило актуальность темы работы - обеспечение информационной безопасности web-сервисов.
Целью дипломной работы является обеспечение информационной безопасности web-сервисов.
Для достижения поставленной цели необходимо решить следующие основные задачи:
- распределение угроз информационной безопасности по типам;
- классификация угроз информации в каждом из типов;
- анализ методов обеспечения безопасности внедряемых на этапах проектирования web-сайта;
- разработка методики проведения аудита безопасности для конкретного сайта;
- реализация тестирования конкретного сайта с выработкой рекомендаций по улучшению политики безопасности.
Объектом исследования выступает (является) web-сервисы коммерческой организации.
Предметом исследования является метод обеспечения информационной безопасности web-сервисов.
Основными источниками информации для написания работы послужили работы Ларионцева Е.А., Щеглова Д.А., Утебова Д.Р. и другие.
Цель и задачи написания работы определили ее структуру, которая состоит из введения, трех глав, заключения, списка используемых источников и приложений. сайт информационный безопасность
Во введении обосновывается актуальность работы, цель, задачи, объект и предмет исследования.
Первая глава посвящена изучению проблемы безопасности web-сайтов и включает трактовку понятия информационной безопасности, выделяет внутренние и внешние угрозы для информационной системы, а также содержит классификацию угроз по уровням.
Вторая часть работы затрагивает методики обеспечения безопасности web-сайтов, проводит анализ технологий проектирования, позволяющих предупредить определенные типы атак еще на этапах проектирования сайта.
И, третья часть, отражающая реализацию проекта по оценке уровня безопасности web-сайта, содержит программу проведения аудита безопасности сайта, результаты тестирования и рекомендации по повышению уровня безопасности.
В заключении сделаны основные выводы и результаты по проделанной работе.
1. Проблемы безопасности web-сайтов как комплексных информационных систем
1.1 Понятие об информационной безопасности
Под термином информационная безопасность обычно имеется в виду степень защищенности информации и обслуживающей её инфраструктуры от различного рода несанкционированных действий (случайных или преднамеренных), которые имеют естественную или искусственную природу. Данные действия могут нанести урон владельцам или пользователям информации, а также поддерживающей инфраструктуре [1].
С целью лучшего понимания уровня безопасности информационных систем необходимо подробнее остановиться на источниках угроз информационной безопасности. Сейчас, если опираться на нормативные документы, угрозы описаны, но их описание является слишком общим, поэтому более грамотное и детализированное описание угроз - очень актуальная задача [8].
Классификацию угроз информационной безопасности удобно строить, опираясь на общую схему классификации, предложенную В.А. Герасименко [3]. В этой схеме все угрозы подразделяются на внутренние и внешние. Чтобы описать внешние угрозы, надо иметь в виду объекты воздействия. Под этим термином следует понимать объекты, на которые осуществляются атаки или которые могут спровоцировать атаку. Такие объекты должны учитываться на всех уровнях информационной системы. В результате внутренних и внешних атак обычно нарушается конфиденциальность, целостность и доступность информации [4].
Объекты в информационной системе на фоне многоуровневой архитектуры показаны на рис. 1.1.
Рис. 1.1 -Информационное обеспечение WEB-сайта
Причиной создания многоуровневой структуры стало появление и развитие архитектуры WEB-приложений и технологии "клиент-сервер" [5]. В случае такой архитектуры уровень клиента занят обозревателем, промежуточный уровень занят Web-сервером и модулями расширения сервера. В данном случае модуль расширения сервера является преобразователем протоколов между клиент-серверным приложением БД и Web-сервером. На промежуточном уровне находится также сервер приложений, он занимается обеспечением совместной работы клиентов и серверов базы данных. Такая архитектура дает возможность для решения различных задач и получения разнообразных преимуществ. Однако размещение базы данных в Интернете резко увеличивает риск безопасности базы данных. С развитием архитектуры увеличилось количество новых объектов, с помощью которых можно осуществлять атаки. Руководствуясь принятой классификацией, эти объекты делятся на три уровня: сетевой, системный уровень (уровень операционной системы) и уровень базы данных.
Разделение объектов по уровням приведено в работе Утебова Д.Р. [6]. Для анализа политики безопасности необходимо рассмотреть структуру программного обеспечения WEB-сервера.
Формирование любого WEB-сервера происходит несколькими слоями программного обеспечения (рисунок 2), каждый из которых потенциально может быть атакован разнообразными способами. Другими словами, угрозе подвержен любой из блоков на рис. 1.2.
Рис. 1.2 - Структура программного обеспечения WEB-сервера
Основой любого сервера является операционная система. Обеспечение ее безопасности является не самым сложным делом, для этого достаточно производить своевременную установку последних обновлений, касающихся системы безопасности. На сегодняшний день операционные системы компании Microsoft и большинство операционных систем семейства Linux дают возможность установки исправлений в автоматическом режиме либо их запуск занимает один клик мыши.
Стоит отметить, что большинство видов хакерских атак тоже автоматизировано с применением вредоносного программного обеспечения, то есть, в данном случае, будет происходить перебор одного сервера за другим в поисках сервера, на который не устанавливалось обновление. Поэтому очень важной является своевременная установка обновлений на все имеющиеся серверы, так как любой сервер с устаревшими версиями обновлений находится под угрозой атаки. В то же время необходимым является обновление всего программного обеспечения, функционирующего на WEB-сервере. Любое программное обеспечение, которое не относится к необходимым компонентам (например, DNS-сервер или средства для удаленного администрирования, такие как VNC или службы удаленных рабочих столов) должно быть отключено или удалено. В случае, когда наличие средств удаленного администрирования необходимо, необходимо предотвращать ситуации, при которых применяются пароли по умолчанию или легко угадываемые пароли. Такие же предосторожности необходимы для учетных записей пользователей, коммутаторов и маршрутизаторов.
Важным аспектом безопасности WEB-сайта является использование антивирусного программного обеспечения. Оно должно использоваться обязательно, вне зависимости от использования в качестве платформы Windows или Unix. В связке с гибким межсетевым экраном, антивирусное программное обеспечение является одним из самых действенных способов защитить сайт от угроз безопасности. В случае, когда WEB-сервер стал мишенью атаки, злоумышленником сразу же будет предпринята попытка загрузки инструментов взлома или вредоносного программного обеспечения, чтобы успеть воспользоваться уязвимостью системы безопасности до ее закрытия. Если качественное антивирусное программное обеспечение не установлено, уязвимость системы безопасности может продолжительное время оставаться необнаруженной.
Конечно, наиболее эффективным способом защиты является применение многоуровневого подхода. Переднюю линию защиты составляют межсетевой экран и операционная система, за ними находится антивирус, который должен заполнять возникающие бреши в защите.
Резюмируя, можно перечислить основные принципы, позволяющие повысить безопасность WEB-сайта (в части атак на операционную систему):
- установка ненужных компонентов является нежелательной. Любой компонент может быть объектом атаки, следовательно, увеличение количества компонентов повышает суммарный риск;
- своевременная установка обновлений системы безопасности для операционной системы и приложений;
- использование антивирусного программного обеспечения с включением установки автоматических обновлений (при этом должна постоянно производиться проверка их установки).
Конечно, применение всех вышеперечисленных принципов может быть затруднительным, но это необходимо, так как для того, чтобы атака злоумышленника была успешна, вполне хватит и одной бреши в системе безопасности. При этом могут наступить такие негативные последствия, так как кража данных и трафика, занесение IP-адреса сервера в черные списки, причинение ущерба организации и нестабильность работы WEB-сайта.
Обзор угроз для остальных структурных элементов WEB-сервера вместе с методами противодействия им будет подробно рассмотрен в главе 2.
1.2 Перечень внутренних и внешних угроз
Источником внешней угрозы может выступать любой человек, у которого нет санкционированного доступа к системе. Источником внутренней угрозы могут быть люди, у которых есть санкционированный доступ к информационной системе (администраторы, конечные пользователи, даже разработчики приложений) [1].
К внешним воздействующим факторам, которые создают угрозы безопасности работе информационной системы можно отнести следующие:
??целенаправленные, деструктивные действия лиц, целью которых является искажение, уничтожение или хищение программ, данных и документов системы;
??целенаправленное воздействие на каналы передачи информации, поступающей от внешних источников, с целью вызвать отказ в обслуживании;
??неправильная работа или вообще останов аппаратуры вычислительных средств;
??вирусы и иные деструктивные программные элементы, распространяемые с использованием систем телекоммуникаций, обеспечивающих связь с внешней средой [4].
Среди внутренних угроз можно выделить следующие атаки:
??атаки со стороны авторизованных пользователей с целью увеличения уровня привилегий в информационной системе;
??непреднамеренные ошибки сотрудников, нарушающих по разным причинам установленную политику безопасности, или некорректно построенная политика безопасности;
??умышленное изменение или искажение хранимых данных;
- угрозы, возникающие из-за ошибок в программном обеспечении и неверной конфигурации системы;
- угрозы, возникающие из-за ошибок в аппаратном обеспечении и неверной его настройки [6].
1.3 Классификация угроз по уровням
В соответствии с принятым выше делением объектов на уровни, атаки на информационные системы делятся на атаки на ОС, атаки на уровне сети передачи данных и атаки на уровне БД [6].
Атаки на ОС, в которых функционирует информационная система, - наиболее частый вид атак. Это обусловлено тем, что число различных типов защищаемых объектов в современных ОС может достигать нескольких десятков, а число различных типов защищаемых информационных потоков - нескольких сотен. Возможность практической реализации той или иной атаки на ОС в значительной мере определяется архитектурой и конфигурацией ОС.
Тем не менее, существуют атаки (перечислены ниже), которые могут быть направлены практически на любые ОС [3].
1. Воровство ключевой информации. Эта атака может реализовываться с использованием следующих методов:
??получение пароля визуальным способом при его вводе пользователем;
??кража пароля из командного файла. Некоторые ОС при сетевой аутентификации (подключении к серверу) допускают ввод пароля из командной строки. Если аутентификация происходит с использованием командного файла, пароль пользователя присутствует в этом файле в явном виде. Например, использование для доступа в сеть командного файла с расширением *.bat и командой (net use Y:\C$ /USER:Администратор admpass), в которой явно присутствует пароль администратора.
??некоторые пользователи, чтобы не забыть свой пароль, записывают его в записные книжки, на бумажки, которые затем приклеивают к нижней части клавиатуры, и т. д. Для злоумышленника узнать такой пароль не составляет никакого труда;
??перехват пароля программной закладкой.
2. Подбирание пароля. В данном случае применяются следующие способы:
??неоптимизированный перебор. При этом происходит последовательное перебирание всех возможных вариантов пароля. Очевидно, что для паролей длиннее шести символов этот способ занимает много времени и является малоэффективным;
??перебор, опирающийся на статистику появления символов и биграмм.
Разные символы встречаются в паролях пользователей с разной вероятностью. По имеющимся результатам исследований, символы встречаются в алфавите паролей с частотой, сходной с частотой их встречаемости в обычном естественном языке. Поэтому, практически этот метод выглядит как подбор вначале паролей, в которых встречаются символы с наибольшей частотой появления, при этом время перебора заметно снижается [3].
В некоторых случаях при подборе паролей применяется не только частота появления символов, но и статистика появления биграмм и триграмм, которые являются комбинаций двух и трех последовательных символов. Для реализации этого способа существует огромное количество программ, основной целью которых является взлом операционной системы.
При этом выделяются две ключевые технологии взлома: явный подбор пароля путем их подачи на вход системы аутентификации, а также вычисление значения хэш-функции с последующим его сравнением с известным образом пароля;
??перебор, оптимизация которого достигается благодаря использованию словарей вероятных паролей. Используя этот метод подбора паролей, злоумышленник вначале осуществляет пробный ввод в качестве пароля всех слов из содержащего наиболее вероятные пароли словаря. Если успех не достигнут, возможен подбор из комбинаций слов, содержащихся в словаре, добавления к началу или к концу слов, содержащихся в словаре, одного или нескольких знаков, таких как цифра, знак препинания, буква и т.д.;
??перебор, оптимизация которого организована на основе полученных сведений о пользователе [3].
Для этого случая характерен подбор пароля злоумышленником по принципу наиболее вероятных паролей, которые мог использовать сотрудник (естественно, по мнению злоумышленника). В качестве таких паролей традиционно выступают паспортные данные (имя, фамилия, дата рождения, номер телефона, имя супруги и т.д.);
??перебор, оптимизация которого основана на базе применения знаний о существующей подсистеме аутентификации операционной системы. При допустимости существования эквивалентных паролей (определяется конкретной ключевой системой ОС), для перебора из каждого класса эквивалентности достаточно опробовать только один пароль..
Очевидно, что наиболее вероятно комплексное применение злоумышленником вышеперечисленных методов [4].
3. Попытка атаки на систему посредством сканирования доступных сетевых ресурсов (случай, когда злоумышленник имеет легальный доступ в систему). Суть данной атаки состоит в операции последовательного считывания файлов, которые хранятся на жестких дисках компьютера. В случае отказа при обращении к конкретному файлу (либо каталогу) злоумышленником выполняется дальнейшее сканирование. При большом количестве пользователей и не очень разумно построенной политике безопасности (например, разрешение самостоятельного создания пользователям доступных сетевых ресурсов), есть вероятность проникновения в систему через доступный ресурс. Следовательно, в процессе такой атаки произойдет считывание злоумышленником содержимого всех файлов, по отношению к которым были допущены ошибки.
Такой метод применим не только для сканирования содержимого жестких дисков персонального компьютера, но и для сканирования содержимого разделяемых ресурсов локальной сети [1].
4. Превышение полномочий. В процессе анализа и использования ошибок, найденных в программном обеспечении или на этапе администрирования операционной системы, злоумышленник наделяет себя правами, намного превышающими полагающимися ему действующей политикой безопасности. Превышение полномочий достигается следующими путями:
??при запуске программы от имени пользователя, наделенного достаточными полномочиями;
??при запуске программы в роли системной программы (то есть, как сервиса, демона, драйвера), исполняемой от имени операционной системы;
??в результате подмены динамически подгружаемой библиотеки, которую используют системные программы, либо несанкционированного изменения переменных среды, содержащих информацию о пути к такой библиотеке;
??при модификации кода или данных подсистемы защиты операционной системы.
5. Атаки класса "Отказ в обслуживании". Целью таких атак является осуществление полного или хотя бы частичного вывода операционной системы компьютера из строя. Данный класс атак можно подразделить на [3]:
??атаки, связанные с захватом ресурсов - программой осуществляется захват всех ресурсов компьютера, каких возможно. Например, происходит присваивание программой самой себе наивысшего приоритета с последующим уходом в так называемый вечный цикл;
??атаки, связанные с бомбардировкой трудновыполнимыми запросами - происходит отправка программой (которая при этом находится в вечном цикле) операционной системе запросов, на исполнение которых затрачиваются большие ресурсы компьютера;
??атаки, связанные с отправкой заведомо бессмысленных запросов - программой, находящейся в вечном цикле, происходит отправка операционной системе заведомо бессмысленных (часто, случайно генерируемых) запросов. В результате этого, на определенном этапе возможно возникновение фатальной ошибки в функционировании операционной системы;
??наиболее очевидный вид атак, связанных с применением известных ошибок в программном обеспечении или недочетов в администрировании операционной системы.
Самыми опасными атаками для информационной системы являются атаки из сетей передачи данных. Это связано со спецификой и разнообразием используемых в сетях протоколов, а также использованием автономных программ небольшого размера, которые могут быть загружены в компьютерные системы пользователей. Эти протоколы и активные элементы способны создать серьезную угрозу для безопасности системы. На уровне сетевого программного обеспечения возможны следующие атаки на информационную систему.
1. Прослушивание канала. Практически все сетевые карты поддерживают возможность перехвата пакетов, передаваемых по общему каналу локальной сети. При этом рабочая станция может принимать пакеты, адресованные другим компьютерам того же сегмента сети. Под сегментом сети понимается часть сети, отделенная от остальной сети оборудованием (концентратором, мостом, маршрутизатором) и использующей защиту всего блока сети, т.е. внешнюю защиту по отношению к сегменту. Таким образом, весь информационный обмен в сегменте сети становится доступным злоумышленнику. Для успешной реализации этой атаки компьютер злоумышленника должен располагаться в том же сегменте локальной сети, что и атакуемый компьютер.
2. Перехват пакетов на маршрутизаторе. Программное обеспечение маршрутизатора имеет доступ ко всем сетевым пакетам, передаваемым через данный маршрутизатор, что позволяет осуществлять перехват пакетов. Для реализации этой атаки хакер должен иметь привилегированный доступ к маршрутизатору, который осуществляет передачу пакетов с атакуемого компьютера. Поскольку через маршрутизатор обычно передается очень много пакетов, их тотальный перехват практически невозможен.
Однако отдельные пакеты вполне могут быть перехвачены и сохранены для последующего анализа хакером [5].
3. Создание ложного маршрутизатора. Злоумышленник отправляет в сеть пакеты определенного вида, в результате чего его компьютер становится маршрутизатором и получает возможность осуществлять предыдущую угрозу. Ложный маршрутизатор необязательно заметен всем компьютерам сети - можно создавать ложные маршрутизаторы для отдельных компьютеров сети и даже для отдельных соединений.
4. Навязывание пакетов. Злоумышленник отправляет в сеть пакеты с ложным обратным адресом. С помощью этой атаки злоумышленник может переключать на свой компьютер соединения, установленные между другими компьютерами и получать необходимые данные от информационной системы. При этом права доступа хакера становятся равными правам того пользователя, чье соединение с сервером было переключено на компьютер хакера.
5. Атаки класса "Отказ в обслуживании". Злоумышленник отправляет в сеть пакеты определенного вида, в результате чего один или несколько компьютеров сети полностью или частично выходят из строя.
6. Нелегальное внедрение разрушающих программных средств. Злоумышленник может использовать троянские программы, которые могут быть предназначены для исследования параметров информационной системы, сбора данных и т.д. Может быть осуществлено также заражение компьютера вирусами с деструктивными функциями или для последующего нецелевого расходования ресурсов.
К угрозам доступности для СУБД можно отнести следующие.
1. Использование свойств первичных и внешних ключей. В первую очередь отнесем сюда свойство уникальности первичных ключей и наличие ссылочной целостности. В том случае, если используются натуральные, а не генерируемые системой значения первичных ключей, может создаться такая ситуация, когда в таблицу невозможно будет вставить новые записи, т. к. там уже будут записи с такими же значениями первичных ключей. Если в БД поддерживается ссылочная целостность, можно организовать невозможность удаления родительских записей, умышленно создав подчиненные записи.
2. Блокировка записей при изменении. Заблокировав записи или всю таблицу, злоумышленник может на значительное время сделать ее недоступной для обновления.
3. Загрузка системы бессмысленной работой. Злоумышленник может выполнить запрос, содержащий декартовое произведение двух больших отношений. Мощность декартового произведения двух отношений мощности N1 и N2 равна 1 2 N Ч N . Это означает, что при выдаче злоумышленником запроса вида SELECT * FROM Tab1, Tab1 ORDER BY 1, где мощность отношения (количество строк в таблице Tab1) 1 N = 10 000, мощность результирующего отношения будет N = N12 =100002 . Вычисление соединения и сортировка результирующего отношения потребуют значительных ресурсов системы и отрицательно скажутся на производительности операций других пользователей [6].
4. Применение деструктивных программных средств. В качестве примера можно привести атаку типа "троянский конь" - выполнение конечными пользователями программ, которые содержат код, который выполняет определенные манипуляции, заданные злоумышленником.
2. Методы обеспечения безопасности
2.1 Защита на уровне WEB-сервера
В соответствии с рис 1.2, после операционной системы следующим по степени важности компонентом программного обеспечения является сам HTTP-сервер. На сегодняшний день, самыми востребованными видами таких серверов являются IIS и Apache.
IIS (Internet Information Servise) представляет из себя компонент Microsoft Windows; является достаточно популярным и распространенным из-за простоты решения WEB-сервером.
В процессе его развертывания необходимо соблюдать следующие меры безопасности:
- требуется отключение служб, которые установлены по умолчанию, но не используются в процессе эксплуатации (например, FTP или SMTP). Также должна быть отключена служба просмотра каталогов, ввиду того, что через нее посетителя сайта имеют возможность видеть файлы, используемые системой;
- должны быть отключены все серверные расширения FrontPage, которые не используются в процессе эксплуатации. Вместе с этим, все выходящие обновления IIS необходимо устанавливать своевременно. Эту задачу можно облегчить путем включения опции автоматического обновления, находящейся на системной панели Windows.
HTTP-сервер Apache является WEB-сервером с открытым кодом, при этом его отличают широкие возможности, а также высокий уровень поддержки. Чтобы успешно развернуть Apache, необходимо проведение детальной настройки, но при этом степень контролируемости WEB-сервера увеличивается. Как правило, серверы Apache управляются Linux или BSD, однако они способны успешно функционировать и под управлением операционной системы Microsoft Windows.
Детальная настройка сервера Apache представляет из себя весьма трудоемкий и сложный процесс, однако можно привести некоторые общие рекомендации по его настройке, выполнение которых позволит повысить уровень защищенности системы:
- доступ к ресурсам по умолчанию, за исключением необходимой в работе функциональности ресурсов, должен быть отключен;
- обязательно должен вестись журнал всех обращений, благодаря которому можно выявлять подозрительную активность;
- чтобы получать выходящие обновления и исправления для системы безопасности своевременно, целесообразным является оформление подписки на Apache Server Announcement.
В случае необходимости расширенной функциональности HTTP-сервера следует использовать серверные интерпретаторы PHP или ASP, которые работают, используя интерфейс CGI.
PHP относится к числу самых популярных серверных скриптовых языков (если не самый популярный). К его достоинства можно отнести наличие обширной базы функционального кода, достаточно простой синтаксис, адаптируемость кода и, самое главное, способность обеспечивать взаимодействие с наиболее популярными базами данных. MySQL является одной из самых популярных систем управления базами данных, успешно взаимодействующих с PHP. Основанием такой популярности служит ее эффективность, разнообразные функциональные возможности и простота настройки и использования.
Язык PHP часто подвергается критике за достаточно низкий уровень безопасности, так как в нем постоянно находят новые и новые уязвимости. Однако, развитие данного языка остается стабильным, а большая часть уязвимостей может быть компенсирована за счет правильной настройки конфигурации, а также повышения уровня безопасности разрабатываемого кода.
Следует отметить важнейшие принципы, которые должны неукоснительно соблюдаться при настройке. Данные принципы касаются файла "php.ini", в частности переменных, определяемых в нем:
- переменная register_globals должна быть установлена в значение off;
- переменная safe_mode должна быть включена, то есть ее значение должно быть on;
- переменная open_basedir должна хранить в себе базовый каталог WEB-сайта;
- переменная log_errors должна быть включена, то есть установлена в значение on;
- переменная allow_url_fopen должна быть отключена, то есть ее значением должно быть off.
В процессе установки MySQL происходит создание базы данных "test", которая является используемой по умолчанию, а также открытой учетной записи "root", не имеющей пароля. Эта учетная запись автоматически получает полные права доступа ко всем базам данных, находящихся на сервере. Так как такая ситуация является совершенно недопустимой, рекомендуется предпринять следующие шаги:
- по возможности, сразу произвести изменение пароля учетной записи "root";
- произвести создание новой учетной записи MySQL, которой будет предоставлен минимальный (минимально необходимый) набор прав;
- произвести удаление базы данных "test" вместе с соответствующими ей пользователями.
Active Server Pages (ASP) является созданной Microsoft надстройкой для IIS, однако разработана и реализация для Apache. Поддержка ASP встроена в IIS, благодаря чему набор дополнительных требований к конфигурации минимален или вообще отсутствует.
ASP - это надстройка для IIS, созданная Майкрософт, хотя также существует реализация для Apache. Поддержка ASP встроена в IIS, в связи с чем дополнительные требования по конфигурации минимальны или отсутствуют.
Антивирус выступает, обычно, в качестве последней линии обороны в случае атаки. Поэтому, обязательным является включение на WEB-серверах (особенно на тех, которые используют динамически формируемый контент), проверки файлов при обращении. На рисунке приведен уровень опасности различных HTTP-серверов.
Рис. 2.1 - Уровень опасности HTTP-серверов
Конечно, при любом уровне защищенности вероятность успешной атаки отлична от нуля. Выполнение проверки файлов при обращении дает возможность существенного снижения вероятности запуска вредоносного кода в системе, так как проверка может осуществляться в двух режимах: как при чтении, так и при записи. Благодаря этому, при попытке разместить вредоносный код на сервере администратор будет своевременно уведомлен.
Выполнение проверки файлов может понизить производительность сервера, однако преимущества, получаемые при такой функциональной возможности, значительно весомее, чем вероятность снижения пропускной способности сервера. На некоторых участках системы (к примеру, для каталогов, хранящих лог-файлы HTTP) проверка может не производиться, что даст возможность снизить уровень влияния на систему.
Атаки WEB-серверов могут быть разделены на две категории: локальные и глобальные:
- основные направления локальных атак - кража информации или попытки перехвата управления на отдельном WEB-сервере;
- при глобальных атаках целью служат несколько WEB-сайтов, основной задачей при этом является заражение как можно большего количества посетителей этих сайтов.
Существует распространенное мнение, что уровень безопасности систем Linux и BSD выше, чем у Windows, однако даже при использовании этих систем не существует гарантий безопасности. Следовательно, они тоже нуждаются в установке антивирусного программного обеспечения. Хотя, важно подчеркнуть, что даже в случае невозможности запуска вредоносной программы на сервере при его защите антивирусным программным обеспечением, возможна ее передача посетителям WEB-сайтов под видом обычного контента. Такие ситуации возможны из-за того, что зачастую эти программы загружаются хакерами посредством PHP или ASP, что делает необязательным заражение самой операционной системы, установленной на WEB-сервере.
Заражение серверов может быть осуществлено через локальную сеть. Например, известное семейство червей Fujacks могло заражать HTML, PHP и ASP-файлы, которые располагались на сетевых дисках.
Очень часто предприятия и организации не имеют оборудования или устойчивого интернет-канала для использования собственного WEB-сервера, в связи с чем они пользуются услугами сторонних поставщиков, предоставляющих услуги хостинга. Существуют три разных направления, которые используются как на небольших, так и на крупных организациях:
- наиболее распространенным и подверженным атакам видом WEB-хостинга является общий выделенный хостинг. Для него характерно использование выделенного сервера, на котором располагается несколько WEB-сайтов. Данная форма хостинга очень экономична, что только увеличивает ее опасность, так как при заражении одного пользователя может произойти заражение всех прочих посетителей сервера;
- при использовании виртуального выделенного хостинга применяются виртуальные выделенные серверы, которые часто называют эластичными. При их создании используется технология виртуализации, они функционируют на нескольких виртуальных серверах, расположенных автономно, но находящихся физически на одном компьютере. Использование такого варианта оправдано для развивающихся предприятий, так как для каждого пользователя возможно наделить доступом к своей операционной системе и серверному программному обеспечению;
- использование выделенных серверов. Такой вариант позволяет резервировать их за одним пользователем. Эта форма хостинга делится на два подвида. Первый подвид - управляемый, предполагает обслуживание серверов персоналом, который отвечает за вопросы локальной безопасности и устранение неисправностей. Во втором случае, отслеживание серверов не производится, благодаря чему существенно сокращаются расходы. При необходимости предоставления любых дополнительных услуг необходима отдельная оплата.
Из всех вышеперечисленных видов хостинга самым эффективным видится виртуальный выделенный хостинг, так как стоимость его меньше, чем у выделенного хостинга, а уровень гибкости и безопасности идентичен.
2.2 Учет возможных атак на уровне проектирования структуры WEB-сайта
Практика показывает, что сфера деятельности и уровень заметности WEB-сайта не являются определяющими для уровня защищенности от потенциальных атак злоумышленников. Следовательно, любая система безопасности должна осуществлять планирование, благодаря которому сокращается ущерб от деятельности вирусов, шпионского программного обеспечения, а также других вредоносных программ.
Злоумышленники, как уже было отмечено выше, в большинстве случаев стараются использовать очевидные уязвимости. Частота появления некоторых типичных ошибок при проектировании инфраструктуры WEB-сайтов настолько велика (причем эти ошибки присущи как новичкам, так и профессионалам), что стоит подробнее их описать.
Одной из главных проблем при проектировании WEB-приложения является то, что обработка запроса новой страницы происходит вне контекста предыдущих запросов. Инструкция WEB-приложению "запомнить пользователя" оказывается куда более сложной, чем обычно.
Большая часть браузеров может поддерживать два метода, используемых WEB-приложениями для "запоминания" пользователей: с помощью обычных файлов cookie и файлов cookie сеанса:
- файлом cookie является небольшой файл, который создается браузером и хранится на компьютере пользователя. Регламентация его содержимого отсутствует, но, как правило, эти файлы содержат название, дату окончания срока действия и некоторый объем данных, например "Variable = 200" или "Parent = true";
- файл cookie сеанса практически идентичен обычному, но при этом он дает возможность WEB-приложениям хранить данные в памяти.
Таким образом, различие между этими типами файлов состоит в том, что обычный файл cookie хранится на компьютере посетителя сайта и находится на нем до того момента, пока посетитель не удалит его. Хранение файла cookie сеанса осуществляется только на время работы компьютера, и при закрытии приложения-браузера происходит его автоматическое удаление. Общей же чертой этих типов файлов является подверженность манипуляциям извне.
Разработчиками часто подразумевается надежность данных из файлов cookie, так как ими применяется принцип: все, код для чего разрабатывается самими, априори надежно. Однако, зачастую, это является ошибочным мнением. Изменение файла cookie (а иногда - и данных активного сеанса) не представляет для хакера особых трудностей, благодаря чему он может попытаться обманом заставить WEB-сайты дать доступ к закрытой странице.
В процессе проектирования системы никогда не следует полагаться на надежность пользовательской информации, которая вводится пользователями напрямую или поступает посредством файлов cookie. Следует стремиться к ограничению объема данных, хранимых в файлах cookie, особенно в случаях, когда нецелесообразным является хранение этих данных в открытом доступе. Вообще, оптимальным считается подход, при котором все данные, хранящиеся на компьютере пользователя, считаются ненадежными.
До сих пор памятен случай, когда в 2009 году сайт MySpace был атакован трояном Js/SpaceStalk-A, который осуществлял кражу информации, хранящейся в файлах cookie, и производил ее пересылку на удаленный сервер. Эта информация содержала конфиденциальные сведения, а именно имена пользователей, адреса предпочитаемых сайтов и пароли.
В том случае, если для каких-то областей WEB-сайта необходимо организовать доступ только для некоторых клиентов, или зарегистрированных пользователей, то для реализации этого метода разграничения доступа необходимо реализовать проверку подлинности пользователей.
Все способы аутентификации пользователей могут быть разделены на базовую аутентификацию, дайджест-аутентификацию и HTTPS:
- в том случае, если используется базовая аутентификация, в состав WEB-запроса включены имя пользователя и пароль. Даже при относительной неважности контента с ограниченным доступом, использование такого метода опасно, так как для пользователей характерно использование одного и того же пароля на нескольких WEB-сайтах. Согласно данных опроса Sophos, более 40% пользователей признались в том, что используют один и тот же пароль в своей деятельности в Интернет. Он используется и для доступа на сайт банка, и для доступа к локальным форумам. Это является грубейшей ошибкой и следует стараться избегать этого, для чего помогут более безопасные способы аутентификации;
- использование дайджест-аутентификации, которую поддерживают все популярные серверы и браузеры, позволяет осуществить надежное шифрование имени пользователя и пароля в запросе. Благодаря ей обеспечивается безопасность имен и паролей, следствием чего вероятность успешной атаки на сервер снижается;
- при использовании протокола HTTPS возможно шифровать все данные, которые передаются между браузером и сервером, а не только имена пользователей и пароли. Использование протокола HTTPS (основанного на системе безопасности SSL) целесообразно при необходимости ввода пользователями важных личных данных. К таким данным могут относиться: адрес, номер кредитной карты или банковские сведения.
Выбирая систему аутентификации, следует стараться использовать самый безопасный вариант из всех, которые имеются в наличии. Использование других вариантов может привести к отпугиванию клиентов, для которых важной является защита своих данных, и может привести к появлению излишнего риска для посетителей WEB-сайта.
При необходимости добавления на сайт популярной и повсеместно используемой функциональности, зачастую, разработчики находят пакет, уже имеющий искомый компонент, и настраивают его для своих нужд. Особенно часто такой подход применяется в многофункциональных микроприложениях, таких как блоги, форумы, системы управления контентом (CMS).
Стремление использовать уже имеющееся понятно - это экономит время и средства.
Однако, подобные надстройки, как и любое другое программное обеспечение, могут обладать рядом недостатков, поэтому существует необходимость отслеживать, какие именно пакеты применяются и регулярно проводить их обновление. Высокая популярность некоторых пакетов может вселять уверенность в их абсолютной надежности, но во многих распространенных пакетах уже обнаруживались уязвимости, которые оставались актуальными даже при корректной установке и настройке.
Список (далеко не полный) популярных серверных приложений, в которых за последнее десятилетие были обнаружены серьезные уязвимости, выглядит так:
- phpBB (форум);
- PHPNuke (CMS);
- Wordpress (блог);
- bBlog (блог);
- CMS Made Simple (CMS).
Большинство из перечисленных надстроек и сейчас достаточно распространены, что ведет к их привлекательности для хакеров, которые стремятся максимизировать количество потенциальных жертв. Так как почти все операционные системы и HTTP-серверы поддерживают автоматическое обновление, существует тенденция у разработчиков "настраивать и забывать" определенный набор функций, но при этом пренебрегать выполнением обновлений различных надстроек, что является весьма серьезной ошибкой.
В этом случае, как и во многих других, приведенных выше, актуально правило - удалять любую функциональность, которая не используется в процессе эксплуатации. Если подобные функции поддерживаются поставщиком хостинга по умолчанию, следует отключить их. При невозможности их отключения надо задуматься о смене поставщика хостинга.
Также важным инструментов по управлению WEB-сайтом являются серверные лог-файлы. Как правило, HTTP-серверы в состоянии обеспечить ведение раздельных журналов доступа и ошибок. Если такая функциональная возможность существует, она должна быть использована в обязательном порядке, так как это может пригодиться при последующем анализе.
Лог-файлы также следует просматривать регулярно, потому что они могут дать информацию для более глубокого изучения угроз, которым подвергаются WEB-сайты. Лог-файлы дают возможность отслеживать потенциальные угрозы безопасности, так как в них происходит детальная фиксация всех успешных и предпринятых попыток обращения к сайту.
2.3 Обеспечение безопасности кода проекта
Создание безопасного кода оказывается не простой задачей. Опытный программист, который не знаком с конкретными проблемами безопасности не может решить такую проблему. Однако следует выделить основные моменты, которые должны быть присущи любым видам кода:
- использование глобальных переменных нежелательно, так как их инициализация возможна на основе подложных запросов GET или POST;
- следует непременно отключить вывод сообщений об ошибках, а появляющиеся проблемы и несоответствия записывать в лог-файл, так как получение информации об ошибках открывает возможность для построения провокации аналогичного характера и поиск других проблем;
- запретить пользователям напрямую проводить удаление специальных символов SQL и escape-последовательностей без использования фильтрации.
Как уже было отмечено выше, для сайтов, которые построены с использованием баз данных, очень актуальной является SQL-инъекция.
Внедрение SQL-кода возможно построением SQL-запросов в тех случаях, когда пользователи могут обрабатывать не фильтрованные данные.
SQL-запросы используются для манипулирования информацией в базах данных и позволяют удалять, обновлять и добавлять новые записи в базу данных. Многие страницы веб-сайтов создаются динамически с использованием SQL-запросов и скриптов.
SQL-запрос часто строится на основе информации вводимой пользователем. Примером могут служить критерии поиска в базе данных, регистрация пользователя на сайте и другие. Посредством этих запросов злоумышленники могут попытаться внести изменения в SQL-код. При отсутствии определенной технологии защиты выполнение внесенного кода может быть проведено на сервере, что приведет к необратимым последствиям.
В качестве примера можно рассмотреть поиск пользователей с заданным именем, реализованный следующим php-кодом:
$surname = $_POST["$surname "]; mysql_query("SELECT * FROM users WHERE sur_name ='$$surname '");
Результатом выполнения этого кода станет список пользователей в базе данных, фамилия которых совпадает с введенной фамилией. Однако в качестве параметра запроса может быть введен следующий код: "'; drop table; #". Выполнение этого кода будет строится на основе первой части, в которой отбираются пользователи с пустым именем и одновременно далее идет код на удаление таблицы пользователи.
"SELECT * FROM users WHERE surname_name=''; DROP TABLE users; #'"
Символ # введен, чтобы MySQL игнорировал часть строки после него. Уязвимость такого рода особенно опасна, поскольку может быть использована для коррекции информации в базе данных, начиная от конкретных полей до изменения структуры базы. Существуют также СУБД, позволяющие на базе SQL-кода строить и исполнять системные команды.
Однако, как указывалось выше, устранение этой проблемы не составляет труда при использовании проверок на вводимые данные.
Язык php использует для этого команду, отсекающую весь лишний код из строки SQL-инъекции:
mysql_real_escape_string
Применение этой функции желательно во всех случаях внедрения данных.
Сайты, отражающие информацию вводимую пользователем, могут быть подвергнуты атакам XSS (межсайтового скриптинга).
Вместо представленной выше технологии атаки на SQL-код, осуществляется атака на код самого веб-сайта, путем внедрения в него дополнительных сегментов.
Стандартный сайт хранит имена посетителей для формирования кабинетов посетителей с динамическим отображением содержимого страницы, с указанием имени посетителя.
Целью злоумышленника может стать проникновение в код сайта при помощи внедрения кода в имя посетителя. Для этого размещается подложная учетная запись, хранящая вредоносный код. Основой этого кода обычно становится скриптовый язык JavaScript, загружающий контент с другого сайта.
Отображая новое имя пользователя, содержащее вредоносный код, веб-сайт выполняет введенную команду. Спектр команд выполняемых таким образом достаточно широк, тем не менее эту опасность пропустили многие известные разработчики и популярные социальные сети Facebook, ВКонтакте в разное время подвергались этим атакам.
Например, рассмотрим следующий php-код:
$surname = $_POST["surname"]; echo "Ваша фамилия: $surname";
Ввод фамилии пользователя приведет к отображению введенной фамилии на сайте и будет иметь следующий вид при выборе фамилии "Петров": "Ваша фамилия: Петров".
Тем не менее, фамилия "Петров" может быть заменена кодом:
("Вы атакованы!") ;</script>"?.
В результате сайт выдаст сообщение "Вы атакованы!".
Противопоставление этим атакам задача очень сложная, для выуживания такого кода необходимо постоянно фильтровать данные от пользователей, как те, что вводятся, так и те что выводятся. Кроме этого, необходимо контролировать все поля, которые меняет пользователь. Это и данные запросов GET и POST, запросы к базе данных и другие.
Для языка php задача частично решена благодаря набору пакетов, которые фильтруют данные, а также встроенных функций типа:
htmlspecialchars
производящие, фильтрацию данных.
3. Оценка уровня безопасности web-сайта
3.1 Основные сведения о тестовом сайте
В качестве тестового сайта рассматривается интернет-площадка, имитирующая онлайн-магазин небольшой компании по продаже цифровой техники.
Приложение для автоматизации интернет-продаж имеет трехзвенную архитектуру, в основе архитектуры находится база данных MySQL, которая находится под управлением СУБД MySQL 5.5, и web сервис к которому получает доступ клиент (рис 3.1, рис. 3.2).
Рис. 3.1 - Программная архитектура связи клиента с системой интернет-магазина
Рис. 3.2 - Технологическая структура компании "Еу"
Технологическая инфраструктура системы представляет собой три блока: один формирует WEB-сервер, второй формирует MS SQL Server, третий блок формируется MySQL Server. На WEB-сервере находится сайт интернет-магазина. Работу с интернет-магазином клиенты могут осуществлять посредством WEB-браузера, зайдя на сайт компании. Финансово-экономический отдел и другие сотрудники получают информацию из базы данных MS SQL, управляемой MS SQL Server. Отдел продаж и отдел логистики работают с интеграцией базы данных на сервере MySQL Server, на базе которого и построен интернет-магазин.
Сайт компании имеет следующую структуру:
- база данных MySQL 5.5. (internetshop);
- web-сервер Apache 2.4;
- страницы, разработанные на языке php c элементами языка гипертекстовой разметки html [11].
База данных имеет следующую структуру (рис 3.3).
Рис. 3.3 - Схема базы данных
Таблицы с характеристиками товаров и пользователей, а также заказы разработаны в среде MySQL 5.5. Ниже представлены классификаторы созданных таблиц (табл. 3.1 - табл. 3.5) [1].
Таблица 3.1
Клиенты
Наименование таблицы в MySQL - Clients |
||||
Наименование |
Тип |
Размер |
Назначение |
|
id_client |
Int |
11 |
Внешний ключ |
|
client |
Varchar |
15 |
Клиента |
|
telephone |
Varchar |
15 |
Телефон |
|
adress |
Varchar |
50 |
Адрес |
Таблица 3.2
Номенклатурные группы
Наименование таблицы в MySQL - Nom_groupe |
||||
Наименование |
Тип |
Размер |
Назначение |
|
Id_nom_groupe |
Int |
11 |
Внешний ключ |
|
name_nom_groupe |
Varchar |
25 |
Наименование номенклатурной группы |
Таблица 3.3
Заявки
Наименование таблицы в MySQL - Basket |
||||
Наименование |
Тип |
Размер |
Назначение |
|
id_basket |
Int |
11 |
Внешний ключ |
|
id_goods |
Varchar |
15 |
Код товара |
|
quantity |
Int |
11 |
Количество товара |
Таблица 3.4
Заказы
Наименование таблицы в MySQL - Orders |
||||
Наименование |
Тип |
Размер |
Назначение |
|
id_order |
Int |
11 |
Внешний ключ |
|
id_client |
Varchar |
15 |
Код клиента |
|
type_pay |
Varchar |
15 |
Тип оплаты |
|
date |
Date |
11 |
Дата принятия |
Таблица 3.5
Товары
Наименование таблицы в MySQL - Goods |
||||
Наименование |
Тип |
Размер |
Назначение |
|
id_goods |
Int |
11 |
Внешний ключ |
|
name_goods |
Varchar |
15 |
Наименование товара |
|
firm |
Varchar |
15 |
Фирма |
|
model |
Varchar |
50 |
Модель |
|
parameter |
Varchar |
100 |
Характеристики |
|
id_nom_groupe |
Int |
11 |
Код номенклатурной группы |
|
picture |
Varchar |
15 |
Имя файла фото |
|
price |
Double |
12.2 |
Цена |
Система автоматизации интернет-продаж реализована на языке php при поддержке Web-сервера Apache 2.4. После запуска приложения открывается главное окно (рис 3.4) [13].
Рис. 3.4 - Главное окно приложения
Пользователь (клиент) может осуществить переход к одной из номенклатурных групп товаров:
- компьютеры, ноутбуки, планшеты;
- телефоны, МР 3;
- телевизоры, аудио/видео, фото.
Для примера на рис 3.5 приведен переход в категорию компьютеры, ноутбуки, планшеты. В данном окне можно просмотреть информацию о товарах данной категории либо добавить один или несколько товаров в корзину клиента.
Подобные документы
Обзор программных средств для создания информационных систем. Анализ деятельности предприятия и задач, подлежащих автоматизации. Проектирование содержания и структуры веб-сайта, его программная реализация. Обеспечение безопасности при передаче данных.
дипломная работа [3,1 M], добавлен 21.01.2012Методы создания сайта; выбор и сравнение программных платформ. Разработка структуры и дизайна сайта. Установка Joomla!, настройка расширений и выбор хостинга. Аппаратно-программные способы и средства обеспечения информационной безопасности веб-сайта.
дипломная работа [3,6 M], добавлен 08.04.2014Проектирование web-сайта. Пользовательские персонажи, детальная концепция сайта. Разработка скелетной схемы страниц, информационной архитектуры. Создание прототипа web-сайта. Выбор среды разработки. CMS системы и их анализ. Стадии проектирования сайта.
курсовая работа [346,7 K], добавлен 18.09.2016Страницы сайтов как набор текстовых файлов, размеченных на языке HTML. Виды сайтов, их классификация. Характеристика сайта: статический или динамический. Проблема безопасности web-сайта. Исследование программного обеспечения и языков программирования.
дипломная работа [850,3 K], добавлен 11.01.2015Проектирование структуры и информационного содержания сайта. Анализ поисковой статистики и подбор синонимов. Целевая аудитория сайта. Реализация каркаса сайта. Разработка навигации и дизайна сайта с использованием css. Реализация интерактивности.
курсовая работа [10,7 M], добавлен 01.09.2016Разработка архитектуры сайта, структуры данных и необходимых программных модулей. Учет фирменного стиля компании при создании дизайна. Внедрение интерфейса административного редактирования сайта. Проведение экспериментального тестирования и отладки.
дипломная работа [3,0 M], добавлен 19.01.2017Общая характеристика коммерческой организации. Основные цели проектирования web-сайта, предъявляемые к нему требования. Этапы разработки эскизного и технического проектов динамического сайта, анализ экономической эффективности его создания и окупаемости.
дипломная работа [3,5 M], добавлен 25.12.2012Теоретический обзор по проблеме создания web-сайта "Конфликты в организации". Анализ информационных ресурсов и сервисов. Характеристика методов исследования конфликтов в организациях. Программный пакет Macromedia Dreamweaver для создания web-сайтов.
дипломная работа [1,7 M], добавлен 22.06.2015Обзор проблемы разработки сайтов. Системы управления контентом. Сайты для агентств недвижимости. Контекстная диаграмма и оценка трудоемкости разработки сайта. Анализ предметной области и выделение информационных объектов. Описание реализации сайта.
дипломная работа [2,9 M], добавлен 12.08.2017Виды структур Web-сайтов: линейная, древовидная, решетчатая и произвольная. Структура и содержание сайта гостиничного комплекса "Воздвиженское", "Смоленск" и "Иртыш". Идеи сайта и целевая аудитория. Заполнение страниц информацией и тестирование сайта.
курсовая работа [1,7 M], добавлен 25.04.2015