- •Аннотация
- •Реферат
- •Содержание
- •Перечень графического материала
- •Введение
- •1 Анализ технического задания
- •2 Структура вычислительной сети ооо «АвиаОк»
- •2.1 Состав лвс
- •2.2 Топология лвс и расположение элементов в помещении.
- •2.3 Информационные потоки
- •3 Анализ угроз безопасности сети
- •3.1 Угрозы внутри сети предприятия
- •3.2 Внешние угрозы предприятия
- •4 Система существующей защиты информации вс на ооо АвиаОк”
- •4.1 Межсетевой экран
- •4.2 Антивирусная защита
- •Безопасность ms sql Server
- •4.9 Резервное копирование
- •5 Рекомендации по улучшению системы защиты информации в лвс предприятия.
- •5.1 Рекомендации по настройкам безопасности в ос Linux Red Hat 7.1, Windows 2000 и ms sql
- •5.2 Реализация и описание программы централизованного управления обновлениями рабочих станций
- •5.2.1 Программная реализация
- •5.2.2 Руководство пользлвателя
- •5.2.3 Пример работы разработанной программы
- •6 Безопасность и экологичночть проекта
- •6.1 Анализ условий труда, степени тяжести и напряженности трудового процесса
- •6.2 Разработка мероприятий по улучшению условий труда
- •6.3 Пожарная безопасность помещения
- •6.4 Охрана окружающей природной среды
- •7 Технико-экономическое обоснование проекта
- •7.1 Постановка задачи и цель разработки
- •7.2 Маркетинговые исследования по разработке
- •7.3 Выбор и обоснование аналога для разработки
- •7.4 Обоснование критериев для сравнения и расчет интегрального показателя качества
- •7.5 Расчет экономического эффекта
- •7.5.1 Ожидаемый экономический эффект
- •7.5.2 Состав эксплуатационных расходов
- •7.5.3 Расчет экономии от увеличения производительности труда пользователя
- •7.5.4. Расчет затрат на этапе проектирования
- •7.6 Определение цены программного продукта
- •7.7 Годовые эксплуатационные расходы потребителя
- •Заключение
- •Список использованных источников
- •Приложение а Листинг программы Corp Tools
Список использованных источников
-
Медведовский И., Семьянов П., Платонов В., «Атака через «Internet»», – СПб.: «Мир и семья – 95», 1997. – 296 с.
-
Середа С., «Анализ средств преодоления систем защиты программного обеспечения». – Режим доступа : http://bugtraq.ru/library/security/
-
Милославская Н.Г., Толстой А.И., Интрасети: обнаружение вторжений: Учеб. пособие для вузов. — М.: ЮНИТИ-ДАНА, 2001. — 587 с.
-
Медведовский И. Д., Практическое применение международного стандарта безопасности информационных систем ISO 17799, 2003. – Режим доступа: http://itstandart.ru.
-
Microsoft Corporation Администрирование сети на основе Microsoft Windows 2000. Учебный курс MCSA/MCSE:Пер. с англ. 3-е изд., испр.— М.: Издатсльско-тортовый дом «Русская Редакция». 2004. — 416 стр.: ил.
-
Eric Allman SENDMAIL - Межсетевой почтовый роутер. – Режим доступа: http://gyro.pvrr.ru.
-
Александр Михайлов “Sendmail vs. spam”.– Режим доступа: http://www.computerra.ru
-
“Лаборатория Касперского”.– Режим доступа: http://www.kaspersky.ru/.
-
Уязвимость WINDOWS 2000. – Режим доступа: http://mp.ustu.ru.
-
Уильям Р. Станек Microsoft Windows 2000. Справочник администратора./Пер. с англ. — М.: Издат.-торговый дом «Русская Редакция», 2002. - 592 с.: ил.
-
Самоучитель по Linux Red Hat. – Режим доступа: http://Soft32.ru.
-
Бакаева Т.Н., Непомнящий А.В., Ткачев И.И., В помощь дипломнику: Методическая разработка к разделу «Безопасность и экологичность» в дипломном проекте (работе) для всех специальностей. Таганрог: ТРТУ, 2001. – 51с.
Приложение а Листинг программы Corp Tools
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPServer, idContext, idGlobal,
idSocketHandle, IdScheduler, IdSchedulerOfThread, IdSchedulerOfThreadDefault,
idTCPConnection, idIOHandler, ShellApi, AppEvnts;
type
TForm1 = class(TForm)
IdTCPServer1: TIdTCPServer; //объект сервера
Button2: TButton;
ListBox1: TListBox; //список клиентов
Button3: TButton;
OpenDialog1: TOpenDialog;
Label1: TLabel;
Button1: TButton;
CheckBox1: TCheckBox;
ListBox2: TListBox; //список файлов
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Button4: TButton;
Button5: TButton;
ApplicationEvents1: TApplicationEvents;
Button6: TButton;
procedure FormCreate(Sender: TObject);
procedure ApplicationEvents1Minimize(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button6Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure IdTCPServer1Disconnect(AContext: TIdContext);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure IdTCPServer1Execute(AContext: TIdContext);
procedure IdTCPServer1Connect(AContext: TIdContext);
procedure SendFile(Client:TidContext; Filename, Destination:string);
procedure CreateTaskIcon;
procedure HandleTray(var msg:tmessage); message WM_USER+10;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//Обработчик соединения, вызывается, когда подключается клиент
procedure TForm1.IdTCPServer1Connect(AContext: TIdContext);
begin
//добавляем в список адрес клиента и туда же объект клиента
listbox1.AddItem(acontext.Binding.IP,AContext);
end;
//Событие, возникающее при приёме данных от клиента
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var s:string;
begin
try
//запрашиваем строку от клиента
s:=AContext.Connection.IOHandler.ReadLn;
//если это сообщение, то выводим его
if s='MESSAGE' then begin
s:=AContext.Connection.IOHandler.ReadLn;
ShowMessage('Сообщение от '+acontext.Binding.IP+': '+#10#13+s);
end;
except
end;
end;
//процедура добавления файлов в список
procedure TForm1.Button3Click(Sender: TObject);
var i:integer;
begin
//вызываем диалог
if not OpenDialog1.Execute then exit;
//добавляем все выделенные файлы в список
for i:=0 to openDialog1.Files.Count-1 do
listbox2.Items.Add(opendialog1.Files[i]);
end;
//процедура отправки файла
procedure TForm1.SendFile(Client:TidContext; Filename, Destination: string);
var i:integer;
r:tsearchrec;
begin
//находим файл, чтобы узнать его размер
i:=findfirst(FileName,faanyfile,r);
if i<>0 then exit;
//отправляем строку клиенту о приёме файла
Client.Connection.IOHandler.Writeln('FILE');
//отправляем конечное имя файла
Client.Connection.IOHandler.Writeln(Destination+extractfilename(filename));
//отправляем размер файла
Client.Connection.IOHandler.Writeln(inttostr(r.Size));
//отправляем файл
//у клиента запускается приём файлового потока
Client.Connection.IOHandler.Writefile(Filename);
findclose(r);
end;
//нажатие кнопки "отправить файлы"
procedure TForm1.Button1Click(Sender: TObject);
var i,c:integer;
ClientsSended, FilesSended:integer;
DestPath:string;
begin
DestPath:=inputBox('Server','Введите папку для помещения файлов у клиента','');
if DestPath='' then exit;
ClientsSended:=0;
FilesSended:=0;
//цикл по каждому клиенту
for c:=0 to listbox1.Items.Count-1 do
//если клиент выбран или нажато "отправить всем", отправляем файлы
if (checkbox1.Checked) or (listbox1.Selected[c]) then begin
//цикл по каждому файлу
for i:=0 to listbox2.Items.Count-1 do begin
try
SendFile(listbox1.items.Objects[c] as TIdContext,listbox2.Items[i], DestPath);
except
//обработчик ошибки передачи
ShowMessage('Невозможно осуществить передачу');
//в случае ошибки, удаляем клиент из списка
listbox1.Items.Delete(c);
end;
inc(FilesSended);
end;
inc(ClientsSended);
end;
ShowMessage('Отослано '+inttostr(FilesSended)+' файлов '+inttostr(ClientsSended)+' клиентам');
end;
//процедура отправки сообщения
procedure TForm1.Button2Click(Sender: TObject);
var s:string;
c:integer;
begin
s:=inputbox('Server', 'Введите сообщение клиенту','');
if s='' then exit;
//цикл по каждому клиенту
for c:=0 to listbox1.Items.Count-1 do
//если клиент выбран или нажато "отправить всем", отправляем сообщение
if (checkbox1.Checked) or (listbox1.Selected[c]) then begin
try
//отправляем строку клиенту о приёме сообщения
(listbox1.Items.Objects[c]as TIdContext).Connection.IOHandler.WriteLn('MESSAGE');
//отправляем сообщение
(listbox1.Items.Objects[c]as TIdContext).Connection.IOHandler.WriteLn(s);
except
ShowMessage('Невозможно осуществить передачу');
//в случае ошибки, удаляем клиент из списка
listbox1.Items.Delete(c);
end;
end;
end;
//обработчик отсоединения клиента
procedure TForm1.IdTCPServer1Disconnect(AContext: TIdContext);
var i:integer;
begin
//по дисконнекту удаляем клиент из списка
if listbox1<>nil then begin
i:=listbox1.Items.IndexOfObject(acontext);
if i>-1 then listbox1.Items.Delete(i);
end;
end;
//процедура замены номера порта
procedure TForm1.Button4Click(Sender: TObject);
var i:integer;
begin
//отсоединяем всех клиентов
//так как по дисконнекту клиент удаляется из списка, обращение всё время к Objects[0]
for i:= 0 to listbox1.Items.Count-1 do
(listbox1.Items.Objects[0] as TIdContext).Connection.Disconnect;
//отключаем сервер
idTCPServer1.Active:=false;
//меняем порт
idTCPServer1.Bindings[0].Port:=strtoint(edit1.Text);
//включаем сервер
idTCPServer1.Active:=true;
end;
//очистка списка файлов
procedure TForm1.Button5Click(Sender: TObject);
begin
listbox2.Clear;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
//отсоединение выбранного клиента
(listbox1.Items.Objects[listbox1.ItemIndex]as TIdContext).Connection.Disconnect;
end;
//процедура создания иконки в трее
procedure TForm1.CreateTaskIcon;
var nd:NOTIFYICONDATA;
begin
zeromemory(@nd, sizeof(NOTIFYICONDATA));
nd.cbSize:=sizeof(NOTIFYICONDATA);
nd.Wnd:=Handle;
nd.hIcon:=application.Icon.Handle;
nd.uID:=1;
nd.uFlags:=NIF_ICON or NIF_TIP or NIF_MESSAGE;
nd.uCallbackMessage:=WM_USER + 10;
nd.szTip:='CorpServer'#0;
Shell_NotifyIcon(NIM_ADD, @nd);
end;
//по закрытию окна удаляем иконку в трее
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var nd:NOTIFYICONDATA;
begin
zeromemory(@nd, sizeof(NOTIFYICONDATA));
nd.cbSize:=sizeof(NOTIFYICONDATA);
nd.Wnd:=Handle;
nd.uID:=1;
Shell_NotifyIcon(NIM_DELETE, @nd);
end;
//обработчик сворачивания приложения, убирающий кнопку из панели задач
procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin
hide;
end;
//обработчик сообщения о нажатии на иконку в трее
procedure TForm1.HandleTray(var msg: tmessage);
begin
if (msg.msg=WM_USER+10) and (msg.lParam=WM_LBUTTONUP) then begin
Show;
Application.Restore;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
CreateTaskIcon;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, idGlobal,
idStreamVCL, ExtCtrls, shellapi, AppEvnts;
type
TForm2 = class(TForm)
IdTCPClient1: TIdTCPClient; //объект клиента
Button2: TButton;
Label1: TLabel;
Timer1: TTimer;
Label3: TLabel;
Edit1: TEdit;
Button4: TButton;
Edit2: TEdit;
Label2: TLabel;
ApplicationEvents1: TApplicationEvents;
procedure ApplicationEvents1Minimize(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button4Click(Sender: TObject);
procedure IdTCPClient1Disconnected(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure MarkDisconnected;
procedure CreateTaskIcon;
procedure HandleTray(var msg:tmessage); message WM_USER+10;
private
{ Private declarations }
public
{ Public declarations }
end;
TListenThread = class(TThread)
procedure Execute; override;
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
var ListenThread:TListenThread; //слушающий поток
{ TListenThread }
//процедура выполнения принимающего потока
procedure TListenThread.Execute;
var s,filename,mes:string;
filesize:integer;
stream:TidStreamVCL;
fstr:TFileStream;
begin
//работает в цикле, пока не отключается снаружи
while not terminated do begin
try
//ожидание строки от сервера
s:=form2.IdTCPClient1.IOHandler.ReadLn;
//в случае, если отправляется файл
if s='FILE' then begin
//запрос имени файла
filename:=form2.IdTCPClient1.IOHandler.ReadLn;
//запрос размера файла
s:=form2.IdTCPClient1.IOHandler.ReadLn;
filesize:=strtoint(s);
//создаём filestream и stream для приёма
fstr:=tfilestream.Create(filename,fmCreate);
stream:=tidStreamVCL.Create(fstr);
//приём файла. Данные записываются в stream,
//затем filestream записывает их непосредственно в файл
form2.IdTCPClient1.IOHandler.ReadStream(stream,filesize);
//по окончании приёма, закрываем файл
fstr.Free;
end
//если отправляется сообщение
else if s='MESSAGE' then begin
//запрос строки
mes:=form2.IdTCPClient1.IOHandler.ReadLn;
//вывод сообщения (#10#13 - это символ переноса строки)
showmessage('Сообщение от сервера: '+#10#13+mes);
end;
except
//в случае ошибки останавливаем поток
terminate;
end;
end;
end;
//запуск приложения
procedure TForm2.FormCreate(Sender: TObject);
begin
CreateTaskIcon;
//создаём принимающий поток
ListenThread:=TListenThread.Create(true);
try
//попытка соединения с сервером
idTCPClient1.Connect;
//запуск потока
ListenThread.Resume;
except
//в случае неудачи, вывод сообщения
MarkDisconnected;
end;
end;
//отправка сообщения серверу
procedure TForm2.Button2Click(Sender: TObject);
var s:string;
begin
s:=inputbox('Client', 'Введите сообщение серверу','');
if s='' then exit;
try
//отправка
idTCPClient1.IOHandler.WriteLn('MESSAGE');
idTCPClient1.IOHandler.WriteLn(s);
except
ShowMessage('Ошибка передачи');
//дисконнект в случае ошибки
MarkDisconnected;
end;
end;
//процедура, вызываемая по таймеру раз в 10 секунд, если клиент не подключён
procedure TForm2.Timer1Timer(Sender: TObject);
begin
try
//попытка соединиться
idTCPClient1.Connect;
//запуск потока
ListenThread.Resume;
//отключение таймера
timer1.Enabled:=false;
label1.Caption:='Клиент активен';
label1.Font.Color:=clgreen;
except
//в случае неудачи ничего не делаем
end;
end;
//остановка потока при отсоединении
procedure TForm2.IdTCPClient1Disconnected(Sender: TObject);
begin
ListenThread.Terminate;
end;
//процедура вывода сообщения об отсутствии связи
procedure TForm2.MarkDisconnected;
begin
ShowMessage('Отсутствует соединение с сервером');
label1.Caption:='Отсутствует соединение';
label1.Font.Color:=clred;
//запускаем таёмер, который будет пытаться соединиться
timer1.Enabled:=true;
end;
//смена номера порта или адреса сервера
procedure TForm2.Button4Click(Sender: TObject);
begin
//отключаем клиент
if idTCPClient1.Connected then idTCPClient1.Disconnect;
//меняем значения адреса и порта
idTCPCLient1.Host:=Edit2.Text;
idTCPCLient1.Port:=strtoint(edit1.text);
//подключаемся
try
idTCPClient1.Connect;
ListenThread.Resume;
timer1.Enabled:=false;
label1.Caption:='Клиент активен';
label1.Font.Color:=clgreen;
except
MarkDisconnected;
end;
end;
//процедура создания иконки в трее
procedure TForm2.CreateTaskIcon;
var nd:NOTIFYICONDATA;
begin
zeromemory(@nd, sizeof(NOTIFYICONDATA));
nd.cbSize:=sizeof(NOTIFYICONDATA);
nd.Wnd:=Handle;
nd.hIcon:=application.Icon.Handle;
nd.uID:=1;
nd.uFlags:=NIF_ICON or NIF_TIP or NIF_MESSAGE;
nd.uCallbackMessage:=WM_USER + 10;
nd.szTip:='CorpClient'#0;
Shell_NotifyIcon(NIM_ADD, @nd);
end;
//по закрытию окна удаляем иконку в трее
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
var nd:NOTIFYICONDATA;
begin
zeromemory(@nd, sizeof(NOTIFYICONDATA));
nd.cbSize:=sizeof(NOTIFYICONDATA);
nd.Wnd:=Handle;
nd.uID:=1;
Shell_NotifyIcon(NIM_DELETE, @nd);
end;
//обработчик сворачивания приложения, убирающий кнопку из панели задач
procedure TForm2.ApplicationEvents1Minimize(Sender: TObject);
begin
hide;
end;
//обработчик сообщения о нажатии на иконку в трее
procedure TForm2.HandleTray(var msg: tmessage);
begin
if (msg.msg=WM_USER+10) and (msg.lParam=WM_LBUTTONUP) then begin
Show;
Application.Restore;
end;
end;
end.