Розробка програми для фіксації спроб атаки на об'єкт, що захищається

Список використаної літератури

Інформаційна безпека - захист конфіденційності, цілісності та доступності інформації. [1]

Конфіденційність - властивість інформаційних ресурсів, пов'язане з тим, що вони не стануть доступними і не будуть розкриті для неуповноважених осіб. [1]

Цілісність-незмінність інформації в процесі її передачі або зберігання. [1]

Доступність-властивість інформаційних ресурсів, що визначає можливість їх отримання і використання на вимогу уповноважених осіб. [1]

Як видно з перерахованого вище, щоб забезпечити безпеку ІС потрібно ретельно опрацьовувати всі нюанси. Робота в цій області не припиняється ні на хвилину. Програмне забезпечення забезпечує безпеку ІС стає все більш досконалим і включають в себе будь-яку функціональність, яка є необхідною відповідно до віянь часу. Розвиваються ресурси допомагають фахівцям вирішувати проблеми безпеки - наприклад, бази даних по вірусам, які містять посилання на засоби боротьби з ними. Це означає, що актуальність будь-яких розробок пов'язаних з інформаційною безпекою вельми висока.

1. Розробка програми

1.1 Завдання на курсовий проект

Тема: Розробка програми для фіксації спроб атаки на об'єкт, що захищається

Необхідно розробити програму, яка буде виконувати записи в log-файл дій ідентифікованих як спроби атаки на об'єкт, що захищається.

1.2Виборіспользуемих інструментів

1.3Опісаніе структури додатка

Програма з п'яти файлів мають расшіреніе.php:

logger.php файл виконує основну роботу з обчислення потенційно-небезпечних сполук і веденні записів про них.

config.php маленький конфігураційний файл містить інформацію необхідну для підключення до СУБД MySQL і використовуваний іншими файлами сценаріїв.

Малюнок 2. Зовнішній вигляд сторінки адміністратора admin.php.

authorized.php це імітація сторінки користувача інформаційного ресурсу, з елементів управління представлені тільки типові для особистих сторінок користувачів посилання. Більш докладно створювати сторінку користувача не має особливого сенсу в розрізі цілей даного проекту, згідно рисунка 3.

Малюнок 3. Зовнішній вигляд сторінки користувача authorized.php.

1.4Опісаніе таблиць СУБД MySQL

В СУБД MySQL буде створена база даних з трьома таблицями, кожна з яких буде нести індивідуальне призначення. Імена таблиць БД:

"Users" - як випливає з назви, вона містить реєстраційні дані користувачів ресурсу.

"Danger_connect" - таблиця в яку поміщаються записи про потенційно-небезпечних з'єднаннях, вони не видаляються і в будь-який момент можуть бути перевірені адміністратором ресурсу.

Команди для створення таблиць в БД виконувалися в консолі клієнта mysql-client у вигляді стандартних SQL-запитів до бази даних відповідно до Малюнком 4.

Малюнок 4. SQL-запити на створення таблиць в БД.

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

"Id" - поле містить унікальний ідентифікатор користувача, тип поля цілочисельний INT (4) (в дужках вказано число байт виділених для зберігання значення), прирощується самої СУБД при додаванні нового користувача, завдяки вказівкою специфікатор AUTO_INCREMENT при створенні таблиці.

"User" - природно містить ім'я користувача, має символьний тип CHAR (10).

"Pass" - містить як неважко здогадатися пароль користувача, також має символьний тип CHAR (15).

"Time" - поле, що зберігає запис про дату і час спроби підключення, має спеціальний тип для зберігання дати та часу DATETIME.

"Time" - містить час спроби підключення, яка відповідно до логіки програми є потенційно-небезпечної, має тип DATETIME.

Малюнок 5. SQL-запити до БД, що відображають структури полів таблиць.

Малюнок 6. SQL-запити до БД для створення облікових записів.

1.5Опісаніе алгоритму роботи програми

Тепер розглянемо роботу кожного файлу. Почнемо по порядку.

Файл index.php. Це звичайний HTML-документ, зі вставкою PHP-коду. Структуру HTML детально розглядати не будемо, так як вона вторинна, крім тега

, описує інтерактивні елементи сторінки. Сам тег використаний у вигляді . Тут є кілька параметрів:

"Name" - містить ім'я форми, яке може бути використане в зверненнях до елементів форми через структуру ієрархії HTML-документа.

"Method" - важливий параметр вказує яким способом ми будемо передавати дані php-скрипту, використовується метод POST, який безпечніше методу GET, т. К. В цьому випадку, дані форми передаються в тілі HTTP-запиту, а не в URL, який бачимо користувачу і відповідно його легко підробити.

Наступним розглянемо маленький конфігураційний файл config.php.

У ньому всього 4 рядки містять параметри з'єднання з базою даних:

"$ Dbhost =" localhost "" - рядок містить url хоста, на якому знаходиться БД, в даному випадку значення localhost означає, що БД на цьому-ж сервері.

"$ Dbadmin =" root "" - ім'я адміністратора СУБД.

"$ Dbpass =" c2h5oh "" - пароль адміністратора СУБД.

"$ Dbname =" attack_logger "" - ім'я БД в якій зберігаються таблиці мають відношення до нашого проекту.

Далі розглянемо файл logger.php, який і виконує всю основну роботу. Починається скрипт з рядка "require_once './config.php'", яка підключає до даного скрипту конфігураційний файл config.php, в результаті чого, змінні оголошені в ньому стають доступними для коду поточного скрипта.

У наступному рядку перевіряється встановлена-ли в глобальному масиві $ _POTS змінна-прапор "go", наявність якої означає, що скрипту передаються дані з форми для обробки. Ось цей рядок:

$ Rows = 0 - змінна потрібна для роботи з БД.

$ Flag = $ _ POST [ 'go'] - змінна зберігає значення прапора "go" описаного вище.

$ User = $ _ POST [ 'user'] - змінна отримує від форми ім'я користувача, яке витягується з глобального масиву $ _POST.

$ Pass = $ _ POST [ 'passwd'] - змінна отримує від форми пароль.

$ Timevisit = date ( 'Y-m-d H-i-s') - ця змінна зберігає поточні час і дату одержувані викликом функції "date", в форматі сумісному з DATETIME, використовуваним в СУБД MySQL для зберігання цього значення.

У лістингу 4 виконується підключення скрипта до СУБД і вибір БД для роботи.

Тепер прийшов час перевірки правильності логіна і пароля введених користувачем. Для цього складається SQL-запит і виконується за допомогою функції mysql_query з перевіркою на успішне виконання запиту. Потім перевіряємо повернутий функцією результат. Спочатку порахуємо число повернутих рядків. Ці дії наведені в лістингу 8.

Тепер розглянемо варіант коли логін / пароль не вірні. Код виконуючий цю функціональність наведено в лістингу 10.

Наступним рядком закриваємо з'єднання з СУБД MySQL явно, хоча при завершенні скрипта ресурси також звільняться автоматично.

І нарешті, завершальна скрипт рядок, яка буде працювати тільки в разі будь-якого збою, в результаті чого змінна "Go" не буде доведено. Рядок просто виводить текст сповіщає про те, що сталося.

На цьому розгляд скрипта logger.php закінчено, можна переходити далі.

У лістингу 11 перевіряється встановлена ​​змінна "see".

Для перевірки установки змінної "see" виконується пошук її по імені в глобальному масиві $ _POST. Далі виконується підключення до СУБД MySQL. Тепер потрібно вибрати в СУБД саме нашу БД для роботи. Дані для отримання інформації щодо під'єднання і вибору БД беруться з конфігураційного файлу config.php, який підключається на початку файлу admin.php в рядку "require_once './ config.php'". Тепер створюємо SQL-запит, за допомогою якого здобуваються всі дані з таблиці потенційно небезпечних сполук danger_connect. Потім потрібно виконати цей запит в БД і отримати результат. Далі, щоб висновок в HTML-документ був структурований, потрібно визначити кількість отриманих від БД рядків і стовпців. Це виконується за допомогою функцій спеціально створених для цього. Функція mysql_numrows повертає число рядків в отриманому від БД результаті. Функція mysql_numfields повертає число полів, чи то пак стовпців в отриманому від БД результаті. Код наведено в лістингу 12.

Код з лістингу 13 виводить у вигляді таблички, дані отримані від БД:

Тут використовуються два вкладених циклу "for", які і здійснюють вибірку даних з результату за допомогою функції mysql_result, і їх висновок за допомогою функції «echo". Вид виведеної сторінки буде виглядати відповідно до Малюнком 8.

Далі закриваємо з'єднання з MySQL і обробляємо випадок, коли змінна "see" не встановлена, виводячи в цьому випадку пропуск замість таблиці.

Малюнок 8. Висновок результату запиту через вкладений цикл.

Розглянемо останній файл autorized.php, який реалізує функціональність особистої сторінки користувача. Він являє собою звичайний HTML-документ, з вставкою php-коду. Код наведено в лістингу 14.

Тут вся функціональність полягає у виведенні великими червоними літерами імені користувача в привітанні. У разі великої кількості користувачів реального ресурсу було б доречно створити в БД таблиці зберігають індивідуальні дані кожного користувача і "витягувати" їх при виведенні сторінки орієнтуючись по отриманому в глобальному масиві ($ _GET [ 'user']) імені користувача, реалізувавши ці функції в даному файлі.

2. Керівництво користувача

Керівництво користувача в даному випадку дуже нескладно, т. К. Функціональність реалізується автоматично, без активної участі користувача. Рекомендації призначені тільки для адміністратора. Розіб'ємо використання системи на кроки і розглянемо їх послідовно.

Крок 2. Вводимо ім'я користувача та пароль, відповідно до Малюнком 11.

Малюнок 11. Введення логіна і пароля.

Крок 3. Попадаємо на сторінку адміністратора, відповідно до Малюнком 12.

Малюнок 12. Сторінка адміністратора інформаційного ресурсу.

Малюнок 13. Висновок відомостей про спроби атаки.

У цій роботі вирішені завдання розробки програми для фіксації атак на об'єкт, що захищається.

Виходячи з вищесказаного можна говорити про успішне досягнення цілей курсової роботи.

Список використаної літератури

// Обробка функціями видалення HTML-тегів (для виключення можливості

// (для виключення можливості написання скриптів на Perl).

// Підключення до БД

mysql_connect ($ dbhost, $ dbadmin, $ dbpass) or die ( "ERROR" .mysql_errno (). "" .mysql_error ());

mysql_select_db ($ dbname) or die ( "ERROR" .mysql_errno (). "" .mysql_error (). "\ n");

// Перевірка на наявність даного ip в контрольній таблиці

$ Sql_exist_ctrl = "select num_logon from log_control where ip = '". $ Ip. "'";

$ Res = mysql_query ($ sql_exist_ctrl) or die ( "ERROR" .mysql_errno (). "" .mysql_error (). "\ N");

if ($ rows == 0) // якщо ip не збережено

// Вставка нового ip в контрольну таблицю

$ Sql_begin_ctrl = "insert into log_control set time = '". $ Timevisit. "', Ip = '". $ Ip. "', Num_logon =". $ I;

mysql_query ($ sql_begin_ctrl) or die ( "ERROR" .mysql_errno (). "" .mysql_error (). "\ n");

else // якщо ip вже є в таблиці

// перевіряємо правильність пари логін-пароль

$ Sql_autoriz = "select id from users where user = '". $ User. "' And pass = '". $ Pass. "'";

$ Res = mysql_query ($ sql_autoriz) or die ( "ERROR" .mysql_errno (). "" .mysql_error (). "\ N");

if ($ rows> 0) // якщо логін-пароль вірні

// видаляємо записи з контр.табліци

$ Sql_end_ctrl = "delete from log_control where ip = '". $ Ip. "'";

else // ЯКЩО логін-пароль невірні

$ I ++; // збільшуємо номер спроби на 1

$ Sql_up2i_ctrl = "update log_control set num_logon =". $ I. "Where ip = '". $ Ip. "'";

// устан. нове значення номера спроби в контрольну таблицю

mysql_query ($ sql_up2i_ctrl) or die ( "ERROR" .mysql_errno (). "" .mysql_error (). "\ n");

if (($ i% 3) == 0) // якщо номер цієї спроби кратний 3м

$ Sql_danger_connect = "insert into danger_connect set time = '". $ Timevisit. "', Ip = '". $ Ip. "'";

mysql_query ($ sql_danger_connect) or die ( "ERROR" .mysql_errno (). "" .mysql_error (). "\ n");

// параметра вказує на невдалу аутеніфікацію користувача.

echo "ERROR. Not set variable Go!";

Програма, яка буде виконувати записи в log-файл дій, ідентифікованих як спроби атаки на об'єкт, що захищається. Мова програмування PHP. Опис таблиць СУБД MySQL. Алгоритм роботи програми. Висновок результату запиту через вкладений цикл.

Характеристика роботи архіватора - комп'ютерної програми, яка здійснює стиснення даних в один файл архіву для легшої передачі, компактного їх зберігання. Особливості процесу архівування - записи файлів і розпакування - відкриття файлів.

Функціональні характеристики програми форматування текстових файлів, вимоги до її інтерфейсу та даними. Схема взаємодії компонентів системи, вибір середовища виконання і програмна реалізація алгоритмів. Тестування і оцінка якості програми.

Складання програми, яка по введеним значенням x, y і номеру дії виконує ту чи іншу арифметичну дію над позитивними числами. Алгоритм і код програми. Проведення тестових наборів. Тестування і результат роботи програми.

Характеристика форматів файлів wav і mp3. Побудова діаграм прецедентів, розробка графічного інтерфейсу і архітектури додатку. Розробка алгоритмів роботи програми: метод TrimWavFile, TrimMp3, ChangeVolume, speedUpX1_2, speedDownX1_2.

Характеристика програми на мові VBA, яка вводить вихідні дані, виконує розрахунки і виводить результати на екран. Опис змінних в програмі, її блок-схема і алгоритм роботи. Лістинг програми. Опис вхідних даних і результат обчислень.

Перетворення матриці за заданими правилами. Методика роботи з масивами, заснована на класичних алгоритмах. Розробка і опис блок-схеми алгоритму. Лістинг програми, екрани роботи і налагодження програми. Інструкція для користувачів програми.

Опис можливостей мови програмування Turbo Pascal. Написання програми створення файлів з прямим доступом, яка також буде обробляти набори даних з певними полями і обмеженнями. Контрольний приклад роботи пошукової програми.

Алгоритм написання програми для пошуку музичних файлів по електронному каталогу магазину на мові програмування С ++. Проектування консольного меню для забезпечення взаємодії користувача з комп'ютером. Тестування програми на компіляторі.