Разработка программы для фиксации попыток атаки на защищаемый объект

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    637,87 Кб
  • Опубликовано:
    2015-07-26
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка программы для фиксации попыток атаки на защищаемый объект

КОСТАНАЙСКИЙ СОЦИАЛЬНО-ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

ИМЕНИ АКАДЕМИКА З.АЛДАМЖАР

ТЕХНИЧЕСКИЙ ФАКУЛЬТЕТ

КАФЕДРА

ФИЗИКИ И ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ








КУРСОВАЯ РАБОТА ПО ДИСЦИПЛИНЕ основы информационной безопасности

ТЕМА: разработка программы для фиксации попыток атаки на защищаемый объект

Выполнил: Комаров

Сергей Борисович

курса специальности

ВТ и ПО

Научный руководитель

Рак О.В.


Костанай

СОДЕРЖАНИЕ

Введение

. Разработка программы

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

.2 Выбор используемых инструментов

.3 Описание структуры приложения

.4 Описание таблиц СУБД MySQL

.5 Описание алгоритма работы программы

Руководство пользователя

Заключение

Приложение А. Листинги файлов программы

Приложение В. Список использованной литературы

Приложение С. Блок-схема работы приложения

ВВЕДЕНИЕ

Информационная безопасность - защита конфиденциальности, целостности и доступности информации.    [1]

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

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

Доступность-свойство информационных ресурсов, определяющее возможность их получения и использования по требованию уполномоченных лиц.[1]

Обеспечение безопасности информационных систем (ИС) и собственно информации, как их части, является одним из самых важных мероприятий в организации работы любых компьютерных систем. В наше время риск потерять или предать огласке конфиденциальную или просто важную информацию очень велик, благодаря влиянию множества трудно учитываемых факторов. Среди этих причин и постоянная высокая активность вредоносных программ (троянских программ, сетевых червей и т. п.) и действия злоумышленников (т. н. хакеров). Вредоносные программы проникая в ИС могут «открывать дверки» для хакеров или передавать на удаленный компьютер злоумышленника конфиденциальные данные или же закачивать в ИС вирусы, которые в свою очередь могут повреждать как операционные системы, так и сами данные. Для некоторых категорий информационных ресурсов очень важно быть постоянно доступными, т. к. их актуальность может изменяться в кратчайшее время, т. е. здесь уже опасность представляет даже не утеря важной информации, а всего лишь временная недоступность. На такие ресурсы для нападения используются атаки на отказ или временную недоступность (т. н. DOS/DDOS-атаки).И таких аспектов можно обнаружить огромное количество и все они будут требовать к себе отдельного внимания для обеспечения информационной безопасности. А это означает, что обеспечение безопасности ИС вопрос комплексный, включающий в себя организационные и технические мероприятия, которые в свою очередь будут разделяться еще на несколько подкатегорий. Так технические мероприятия можно разделить на применение в работе аппаратного обеспечения, способного обеспечить повышенный уровень защищенности ИС, применение грамотно настроенных программных средств обеспечения безопасности и грамотно продуманная схема организации защищаемого объекта (например создание демилитаризованных зон - DMZ, в случае защиты корпоративной сети и публичных серверов и т. п.). Организационные мероприятия можно разделить на создание режима ограниченного доступа к оборудованию содержащему или оберегающему важные данные и на работу с пользователями ИС, которых нужно научить работать с ИС так, чтобы своими действиями не нарушить безопасность системы (при «помощи» слабых паролей и т.п.) и непременно контролировать их «сознательность» в данном вопросе, т. к. человеческий фактор- одна из самых слабых частей безопасности ИС.[2]

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

1. РАЗРАБОТКА ПРОГРАММЫ

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

Тема: Разработка программы для фиксации попыток атаки на защищаемый объект.

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

Итак, необходимо определиться с защищаемым объектом. Так как одним из популярных методов атаки на ИС является атака «грубой силой» или атака перебором паролей по словарным базам, я решил выбрать в качестве защищаемого объекта страницу авторизации пользователей условного ресурса. Разрабатываемое приложение будет заносить в базу данных необходимые сведения о каждом подключающемся пользователе. В случае успешной авторизации, пользователь будет попадать на свою приватную страницу, а данные об этом соединении будут удалены из БД, т. к. авторизация, успешная с первой попытки почти наверняка будет легитимна, в случае неудачи - возврат на страницу входа с выводом сообщения о неверном логине или пароле. Вторая попытка авторизации, так же будет фиксироваться в БД, в случае успеха авторизации - переадресация пользователя в приватную зону, в случае неудачи - возврат на страницу входа с уведомлением. И лишь в случае неуспешной авторизации в третий раз, выполняется запись в базу т. н. «опасных соединений», которая содержит дату, время попытки подключения и ip-адрес хоста с которого пытались подключиться. Для администратора ресурсов на его странице будет предусмотрена кнопка для просмотра БД опасных коннектов.

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

Реализация приложения будет выполняться на языке программирования PHP. Выбор этого языка программирования не случаен - он является практически стандартным выбором в случае программирования для Веб и имеет развитую систему библиотек кода, позволяющую подключаться к любым СУБД. На этом языке удобно писать любые приложения для Веб, благодаря огромному количеству обучающей литературы на любом языке. Кроме того С-подобный синтаксис языка делает его удобным и даже привычным в применении. Ему легко обучиться и на нем легко создавать программное обеспечение. В качестве среды разработки будет использована IDE NetBeans 6.9, имеющая систему подсказок по функциям языка PHP и подсветку синтаксиса, что делает написание программ более комфортным. Кроме этих программ, нужен веб-сервер, на котором будет проходить тестирование проект. Можно для этих целей использовать эмуляторы типа «Денвера» или бесплатный хостинг, но гораздо проще и удобней на мой взгляд использовать связку именуемую LAMP, что означает Linux + Apache + MySQL + PHP. Эта связка используется практически на любом хостинге, установка и настройка ее под Linux не составляет особых трудностей - системы управления пакетами ПО помогут установить все приложения, а изменение пары строк в конфигурационных файлах - дело пяти минут. Версия веб-сервера Apache - 2, т. к. она стабильна и имеет преимущества по сравнению с популярной ранее версией 1.3 в безопасности. Исходя из выбранного набора инструментов будет использоваться СУБД MySQL 5.1. Эта СУБД разработана в Sun Microsystem поглощенной в 2010 году корпорацией Oracle. Для этой СУБД в языке PHP существуют удобные в применении библиотеки функций имитирующие «живое» общение с СУБД на языке SQL, и в тоже время скрывающие от программиста особенности реализации SQL, что делает программирование намного более удобным. На мой взгляд также важно, что все используемое программное обеспечение является бесплатным для персонального (а некоторое и для коммерческого) использования.

.3 Описание структуры приложения

Программа из пяти файлов имеющих расширение .php:.php являющийся страницей авторизации, содержащей минимальный объем php-кода и в основном реализованной на языке разметки HTML, в соответствии с Рисунком 1..php файл выполняющий основную работу по вычислению потенциально-опасных соединений и ведении записей о них..php маленький конфигурационный файл содержащий информацию необходимую для подключения к СУБД MySQL и используемый другими файлами сценариев..php имитация страницы администратора ресурса, имеющая в своем наборе кнопку для просмотра записей об опасных соединениях. Сама страничка имитирует личную страницу в какой-либо социальной сети, со стандартными (в данном случае - бездействующими) ссылками и аватаром пользователя. Кроме того она имеет особую по сравнению со страницами обычных пользователей функциональность - возможность просмотра из БД записей о потенциально опасных соединениях. Эта функциональность реализована в виде кнопки “See” по нажатию на которую срабатывает php-скрипт вложенный в тело данной страницы и выводящий в середине страницы список зафиксированных ip-адресов, в соответствии с Рисунком 2.

Рисунок 1. Внешний вид страницы авторизации index.php.

Рисунок 2. Внешний вид страницы администратора admin.php.

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

Рисунок 3. Внешний вид страницы пользователя authorized.php.

.4 Описание таблиц СУБД MySQL

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

«users» - как следует из названия, она содержит регистрационные данные пользователей ресурса.

«log_control» - таблица содержащая временные записи о неудачных попытках авторизоваться и счетчик попыток.

«danger_connect» - таблица в которую помещаются записи о потенциально-опасных соединениях, они не удаляются и в любой момент могут быть проверены администратором ресурса.

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

Рисунок 4. SQL-запросы на создание таблиц в БД.

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

Поля таблицы «users»:

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

«user» - естественно содержит имя пользователя, имеет символьный тип CHAR(10).

«pass» - содержит как нетрудно догадаться пароль пользователя, также имеет символьный тип CHAR(15).

Поля таблицы «log_control»:

«time» - поле, хранящее запись о дате и времени попытки подключения, имеет специальный тип для хранения даты и времени DATETIME.

«ip» - поле, хранящее ip-адрес хоста пытавшегося подключиться к защищаемому ресурсу, тип поля символьный CHAR(15).

«num_logon» - поле, хранящее номер текущей попытки соединения для данного ip-адреса, имеет целочисленный тип INT(11).

Поля таблицы «danger_connect»:

«time» - содержит время попытки подключения, которая согласно логике программы является потенциально-опасной, имеет тип DATETIME.

«ip» - ip-адрес хоста совершившего данную попытку, имеет тип INT(15).


Рисунок 5. SQL-запросы к БД, отображающие структуры полей таблиц.

Кроме вышеперечисленных операций с БД нужно произвести еще одну, без которой работать система не будет - ввести пользователей и пароли для возможности авторизации. Так как данная функциональность не имеет отношения к сущности реализуемого проекта я выбрал самый простой способ создания пользователей ресурса - из консоли управления СУБД посредством SQL-запросов. В соответствии с Рисунком 6 были выполнены запросы к базе данных на создание учетных записей администратора и пользователя информационного ресурса. Затем был выполнен SQL-запрос на выборку всех данных из таблицы “users”, с целью продемонстрировать созданные учетные записи. Имя пользователей и пароли для учетных записей были выбраны наугад, а идентификатор каждой учетной записи назначался автоматически.

Рисунок 6. SQL-запросы к БД для создания учетных записей.

.5 Описание алгоритма работы программы

Рассмотрим алгоритм работы программы. Как было выше указано, программа состоит из 5 файлов. Первым вступает в работу файл index.php, который предлагает пользователю ввести логин и пароль. Далее введенные пользователем данные передаются файлу logger.php, который не имеет пользовательского интерфейса, зато выполняет основные функции программы - сверяет логин и пароль с имеющимися в БД и в случае успеха переадресует пользователя или администратора на его страничку (для администратора это admin.php, а для пользователя autorized.php). Данные для соединения с БД эти файлы берут из конфигурационного файла config.php.

Теперь рассмотрим работу каждого файла. Начнем по порядку.

Файл index.php. Это обычный HTML-документ, со вставкой PHP-кода. Структуру HTML подробно рассматривать не будем, так как она вторична, кроме тега <form>, описывающего интерактивные элементы страницы. Сам тег использован в виде <form name="login" action="logger.php" method="POST">. Здесь имеются несколько параметров:

«name» - содержит имя формы, которое может быть использовано в обращениях к элементам формы через структуру иерархии HTML-документа.

«action» - содержит название php-скрипта, которому будет передано содержание формы для обработки.

«method» - важный параметр указывающий каким способом мы будем передавать данные php-скрипту, используется метод POST, который безопаснее метода GET, т. к. в этом случае, данные формы передаются в теле HTTP-запроса, а не в URL, который видим пользователю и соответственно его легко подделать.

Листинг 1.($_GET['fail'])"<font color='red'>Ошибка авторизации!</font>";

else echo "&nbsp";

Приведенная в Листинге 1 вставка php-кода просто отлавливает переменную-флаг «fail» , присутствие которой в переменной-массиве $_GET говорит об ошибке предыдущей авторизации. Если этот флаг обнаружен в URL страницы, скрипт при выводе вставляет в страницу надпись «Ошибка авторизации!» в соответствии с Рисунком 7.

Рисунок 7. Страница авторизации с сообщением об ошибке.

Следующим рассмотрим маленький конфигурационный файл config.php.

В нем всего 4 строки содержащие параметры соединения с базой данных:

«$dbhost="localhost"» - строка содержит url хоста, на котором находится БД, в данном случае значение localhost означает, что БД на этом-же сервере.

«$dbadmin="root"» - имя администратора СУБД.

«$dbpass="c2h5oh"» - пароль администратора СУБД.

«$dbname="attack_logger"» - имя БД в которой хранятся таблицы имеющие отношения к нашему проекту.

Далее рассмотрим файл logger.php, который и выполняет всю основную работу. Начинается скрипт со строки «require_once './config.php'», которая подключает к данному скрипту конфигурационный файл config.php, в результате чего, переменные объявленные в нем становятся доступными для кода текущего скрипта.

В следующей строке проверяется установлена-ли в глобальном массиве $_POTS переменная-флаг «go», наличие которой означает, что скрипту передаются данные из формы для обработки. Вот эта строка:

Листинг 2.($_POST['go'])

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

Далее следует блок объявления и инициализации переменных. Рассмотрим его построчно:

$i=0 - переменная выполняющая роль счетчика попыток авторизации.

$rows=0 - переменная нужная для работы с БД.

$flag=$_POST['go'] - переменная хранящая значение флага «go» описанного выше.

$user=$_POST['user'] - переменная получающая от формы имя пользователя, которое извлекается из глобального массива $_POST.

$pass=$_POST['passwd'] - переменная получающая от формы пароль.

$timevisit=date('Y-m-d H-i-s') - эта переменная хранит текущие время и дату получаемые вызовом функции «date», в формате совместимом с DATETIME, используемым в СУБД MySQL для хранения этого значения.

$ip=$_SERVER['REMOTE_ADDR'] - в эту переменную записывается значение ip-адреса удаленного хоста, с которого выполняется попытка авторизации. Это значение извлекается из глобального массива      $_SERVER. $server_ip=$_SERVER['SERVER_ADDR'] - в эту переменную запишем значение ip-адреса нашего сервера, это необходимо для динамического создания ссылок при переадресации пользователя. На этом объявление переменных закончено. Рассмотрим скрипт дальше. В следующих 2-х строках мы выполняем обработку полученных от формы данных функцией htmlspecialchars для удаления HTML-тегов, для исключения написания и использования скриптов на JS или VB и функцией удаления слэшей stripslashes, для исключения написания и использования скриптов на Perl. Это необходимо, т. к. злоумышленник может ввести вместо имени или пароля текст скрипта на вышеперечисленных языках, который может открыть брешь в безопасности системы. Эти строки приведены в Листинге 3.[3]

Листинг 3.

$user=htmlspecialchars(stripslashes($user));

$pass=htmlspecialchars(stripslashes($pass));

В Листинге 4 выполняется подключение скрипта к СУБД и выбор БД для работы.

Листинг 4.

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

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

В этой строке выполняется подключение к СУБД используя параметры из конфигурационного файла. Затем мы выбираем для работы свою БД, так же используя параметр $dbname из конфигурационного файла. Со следующей строки, согласно Листинга 5 начинает выполнение алгоритм проверки имени пользователя и пароля, а также количества неуспешных попыток авторизации с данного ip-адреса. Сначала создаем SQL-запрос, который проверит значение поля num_logon из таблицы log_control для даного ip-адреса, которое содержит номер предыдущей неуспешной попытки авторизации. Далее с помощью функции mysql_query мы выполняем этот запрос к БД и получаем в качестве ответа объект типа «ресурс».

Листинг 5.

$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");

$rows=mysql_num_rows($res);

Затем в переменную $rows мы при помощи функции mysql_num_rows помещаем число строк в полученном от БД ответе, преследуя при этом следующую цель: если число строк возвращенных в ответ на запрос окажется равным нулю, это будет означать первую попытку авторизации. В Листинге 6 приведена сама проверка возвращенного результата:

Листинг 6.

if($rows==0)

{

$sql_begin_ctrl="insert into log_control set time='".$timevisit."', ip='".$ip."', num_logon=".$i;_query($sql_begin_ctrl) or die ("ERROR ".mysql_errno()." ".mysql_error()."\n");

}

Если запрос на авторизацию первый, создаем SQL-запрос к БД который выполнит вставку данных (ip-адрес и дата/время) о текущем подключении в таблицу log_control и присвоит полю num_logon номер попытки, равный нулю. Затем мы выполняем этот запрос при помощи функции mysql_query. Иначе, если этот ip-адрес уже есть в таблице log_control, что означает имеющиеся предыдущие ошибки авторизации, мы получаем в переменную $i количество неуспешных попыток для данного ip-адреса, как в Листинге 7.

Листинг 7.

{

$array=mysql_fetch_array($res);

$i=$array[0];

}

Теперь пришло время проверки правильности логина и пароля введенных пользователем. Для этого составляется SQL-запрос и выполняется посредством функции mysql_query с проверкой на успешное выполнение запроса. Затем проверяем возвращенный функцией результат. Сначала посчитаем число возвращенных строк. Эти действия приведены в Листинге 8.

Листинг 8.

$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");

$rows=mysql_num_rows($res);

Число строк может быть равно нулю или больше. Если равно нулю, это означает, что пара логин / пароль была неверна. Я сначала отработаю удачную авторизацию. Код приведен Листинге 9.

Листинг 9.($rows>0)

{

$sql_end_ctrl="delete from log_control where ip='".$ip."'";_query($sql_end_ctrl);($user)

{"admin" :_redirect("#"869107.files/image008.jpg">

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

Рассмотрим последний файл autorized.php, реализующий функциональность личной страницы пользователя. Он представляет собой обычный HTML-документ, с вставкой php-кода. Код приведен в Листинге 14.

Листинг 14.

<?php"<font color=red>".strtoupper($_GET['user'])."</font>";

?>

Здесь вся функциональность заключается в выводе большими красными буквами имени пользователя в приветствии. В случае большого количества пользователей реального ресурса было бы уместно создать в БД таблицы хранящие индивидуальные данные каждого пользователя и «вытаскивать» их при выводе страницы ориентируясь по полученному в глобальном массиве ($_GET['user']) имени пользователя, реализовав эти функции в данном файле.

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

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

Итак, Шаг 1. Набираем в адресной строке браузера URL или ip-адрес ресурса, в соответствии с Рисунком 9. И попадаем на страницу авторизации, в соответствии с Рисунком 10.

Рисунок 9. Набор URL в адресной строке.

Рисунок 10. Страница авторизации пользователя.

Шаг 2. Вводим имя пользователя и пароль, в соответствии с Рисунком 11.

Рисунок 11. Ввод логина и пароля.

Шаг 3. Попадаем на страницу администратора, в соответствии с Рисунком 12.

Рисунок 12. Страница администратора информационного ресурса.

Шаг 4. Для просмотра списка зафикисрованных данных о потенциально-опасных соединениях нажимаем кнопку «See» в верхнем правом углу интерфейса, в соответствии с Рисунком 13.

Рисунок 13. Вывод сведений о попытках атаки.

ЗАКЛЮЧЕНИЕ

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

В процессе создания курсовой работы, был разработан и реализован алгоритм решения поставленной задачи. Программа как и было намечено, реализована на языке программирования PHP, с использованием языка разметки гипертекста HTML, используемым для создания графического интерфейса пользователя GUI. В качестве платформы программного комплекса использована связка Linux + Apache + MySQL + PHP. Полученные в результате проведенной работы результаты соответствуют поставленным задачам. Написано приложение выполняющее запись о потенциально-опасных соединениях, коими в рамках решаемой задачи были признаны каждая 3-я не успешная попытка авторизации выполненная подряд. Запись помещается в таблицу БД для долговременного хранения и просмотра администратором системы в любой момент.

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

ПРИЛОЖЕНИЕ А.

ЛИСТИНГ ПРОГРАММЫ.

Листинг 1.1. Файл index.php

<?php

/**********************************************************

* главная страница проекта - страница авторизации                  *

**********************************************************/

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Добро пожаловать на страницу авторизации</title>

</head>

<body><center>

<form name="login" action="logger.php" method="POST">

<table name="body" width="100%" height="100%">

<tr valign="center" align="center"><td bgcolor="bbbbff">

<table name="border">

<tr><td>

<table name="form">

<tr><td colspan="2" align="center"><h1><font color="222222">ВХОД</font></h1></td></tr>

<tr><td colspan="2" align="center"><h6>

<?php

//Вставка отслеживающая наличие переменной fail указывающей на

//ошибку авторизации.

if($_GET['fail'])

echo "<font color='red'>Ошибка авторизации!</font>";

else echo "&nbsp";

?>

</h6></td></tr>

<tr><td>&nbsp;Login&nbsp;&nbsp;</td><td><input type="text" name="user">&nbsp;</td></tr>

<tr><td>&nbsp;Password</td><td><input type="password" name="passwd">&nbsp;</td></tr>

<tr><td colspan="2" align="center"><h6>&nbsp;</h6></td></tr>

<tr><td><h6>&nbsp;<a href="index.php">Регистрация</a></h6></td><td align="right"><h6><a href="index.php">Забыли пароль?</a>&nbsp;</h6></td></tr>

<tr><td colspan="2" align="center"><h6>&nbsp;</h6></td></tr>

<tr align="center" valign="center"><td colspan="2"><h1><input type="submit" name="go" value="Logon"></h1></td></tr>

</table>

</td></tr>

</table>

</td></tr>

</table>

</form>

</center></body>

</html>

<?php

/*****************************************************

* файл выполняющий основную работу по выявлению *

* и логированию попыток взлома перебором *

*****************************************************/_once './config.php';($_POST['go'])

{

$i=0;

$rows=0;

$flag=$_POST['go'];

$user=$_POST['user'];

$pass=$_POST['passwd'];

$timevisit=date('Y-m-d H-i-s');

$ip=$_SERVER['REMOTE_ADDR'];

$server_ip=$_SERVER['SERVER_ADDR'];

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

//написания скриптов на JavaScript и Visual Basic) и обратных слешей

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

$user=htmlspecialchars(stripslashes($user));

$pass=htmlspecialchars(stripslashes($pass));

//Подключение к БД_connect($dbhost, $dbadmin, $dbpass) or die("ERROR ".mysql_errno()." ".mysql_error());_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");

$rows=mysql_num_rows($res);($rows==0) //если ip не записан

{

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

$sql_begin_ctrl="insert into log_control set time='".$timevisit."', ip='".$ip."', num_logon=".$i;_query($sql_begin_ctrl) or die ("ERROR ".mysql_errno()." ".mysql_error()."\n");

}

else //если ip уже есть в таблице

{

$array=mysql_fetch_array($res); //получаем номер текущей попытки авторизации

$i=$array[0];

}

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

$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");

$rows=mysql_num_rows($res);($rows>0) //если логин-пароль верны

{

//удаляем записи из контр.таблицы

$sql_end_ctrl="delete from log_control where ip='".$ip."'";

mysql_query($sql_end_ctrl); ($user)

{

case "admin" :

http_redirect("#"869107.files/image014.gif">

Похожие работы на - Разработка программы для фиксации попыток атаки на защищаемый объект

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!