- •Аннотация
- •Реферат
- •Содержание
- •Перечень графического материала
- •Введение
- •1 Анализ технического задания
- •2 Характеристика лвс (локальной вычислительной сети) отдела воинской части 03113
- •2.1 Состав лвс
- •2.2 Структура лвс и расположение элементов лвс в помещении
- •2.3 Информационные потоки
- •3 Анализ угроз безопасности сети
- •3.1 Внешние угрозы
- •3.1.1 Сервер электронной почты
- •3.1.2 Телекоммуникационный сервер
- •3.1.3 Рабочее место вызова (рм вызова)
- •3.2 Угрозы внутри сети
- •4 Система защиты информации вс в отделе воинской части
- •5 Рекомендации по улучшению системы защиты информации в вс отдела
- •5.1 Рекомендации по настройкам безопасности в ос Windows nt 4.0 и ms sql
- •5.2 Реализация и описание программы централизованного управления настройками по безопасности Windows nt и ms sql
- •5.2.1 Параметры безопасности
- •5.2.1.1 Настройки файловой системы
- •5.2.1.2 Настройки, хранящиеся в реестре
- •5.2.1.3 Настройки локальной политики безопасности
- •5.2.1.4 Настройки ms sql сервера
- •5.2.2 Программная реализация
- •5.2.3 Руководство пользователя
- •5.3 Защищенная операционная система мсвс 3.0
- •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 Годовые эксплуатационные расходы потребителя
- •Заключение
- •Список использованных источников
- •Приложение а Листинг программы
- •Приложение б Рекомендации по обеспечению защиты локальной сети отдела
Список использованных источников
-
Защита данных в компьютерных сетях. – Режим доступа: http://vsptus.ru/6.html/ .
-
Медведовский И. Д., Практическое применение международного стандарта безопасности информационных систем ISO 17799, 2003.
-
Милославская Н.Г., Толстой А.И., Интрасети: обнаружение вторжений: Учеб. пособие для вузов. — М.: ЮНИТИ-ДАНА, 2001. — 587 с.
-
Гречанинов А. DMZ - Каменный мешок для хакера, 2002. – Режим доступа: http://gretchaninov.com/.
-
Тутубалин А. Распределенные методы обнаружения спама, 2003. – Режим доступа: http://www.lexa.ru/lexa/.
-
http://www.microsoft.com/technet/security/bulletin/ .
-
Кландер Л. Hacker Proof: полное руководство по безопасности компьютера, - Минск: «Попурри», 2002.
-
Медведовский И.Д., Семьянов П.В., Леонов Д.Г. Атака на Internet, “ДМК”,1999.
-
Knight B. 10 Steps to Securing your SQL Server. – Режим доступа: http://www.sql.ru/.
-
“Лаборатория Касперского”. – Режим доступа: http://www.kaspersky.ru/.
-
Система Check Point Firewall-1. – Режим доступа: http://www.cnews.ru/ .
-
Lewis M. Creating a Manageable Security. – Режим доступа: http://www.sql.ru/articles/Publications.shtml/.
-
Всероссийский научно-исследовательский институт автоматизации управления в непромышленной сфере, “МСВС 3.0”. – Режим доступа: http://www.vniins.ru/ .
-
Тюлин А., Жуков И., Ефанов Д. Защищенная операционная система МСВС 3.0. – Режим доступа: http://www.osp.ru/os/.
-
Ефанов Д.В., Жуков И.Ю. Функциональные возможности ВОС МСВС 3.0, Москва, ВНИИНС.
-
Ефанов Д.В., Жуков И.Ю. Домен МСВС как основа построения защищенных АС, Москва, ВНИИНС.
-
“Рускард”. – Режим доступа: http://www.ruscard.org .
-
Dr.Web для МСВС 3.0. – Режим доступа: http://www.antiviruses.ru .
-
Бакаева Т.Н., Непомнящий А.В., Ткачев И.И., В помощь дипломнику: Методическая разработка к разделу «Безопасность и экологичность» в дипломном проекте (работе) для всех специальностей. Таганрог: ТРТУ, 2001. – 51с.
-
Учебно-методическое пособие к выполнению практической работы «Оценка и меры по снижению тяжести и напряженности трудового процесса» по курсу «Безопасность жизнедеятельности». Таганрог: ТРТУ, 2003. – 28с.
-
ГОСТ 7.32-2001 Система стандартов по информации, библиотечному и издательскому делу. Отчет о научно-исследовательской работе. Структура и правила оформления.
Приложение а Листинг программы
unit mainForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, Registry, StdCtrls, Spin, ShellApi, Mask, DB, ADODB,
JvComponentBase, JvBaseDlg, JvWinDialogs, ImgList, ExtCtrls;
const
//установки по умолчанию
CCAD = 0;
CRestrictAnonymous = 1;
CAutoShare = 0;
CScreenSaver = 1;
CScreenSaverPass = 1;
CMSSQLPort = 1450;
CXP_CMDShell = 0;
CAuditLevel = 3;
type
Tmain = class(TForm)
ListView1: TListView;
GB_FSType: TGroupBox;
GB_CADSettings: TGroupBox;
CAD: TCheckBox;
StatusBar: TStatusBar;
Apply: TButton;
Cancel: TButton;
Recommend: TButton;
RestrictAnonymous: TCheckBox;
AutoShare: TCheckBox;
ScreenSaver: TCheckBox;
GB_ScreenSaver: TGroupBox;
ScreenSaverTime: TSpinEdit;
Label1: TLabel;
Label2: TLabel;
ScreenSaverPass: TCheckBox;
GB_Policy: TGroupBox;
Label3: TLabel;
Label4: TLabel;
OpenSecurityOptions: TButton;
Label5: TLabel;
OpenUserRights: TButton;
GB_MSSQL: TGroupBox;
Label6: TLabel;
MSSQLPort: TSpinEdit;
ADOConnection: TADOConnection;
ADOQuery: TADOQuery;
XP_CMDShell: TCheckBox;
AuditLevel: TComboBox;
Label7: TLabel;
JvObjectPropertiesDialog: TJvObjectPropertiesDialog;
Label8: TLabel;
OpenSecuritySettingsSystem32: TButton;
ImageList: TImageList;
CADImage: TImage;
RestrictAnonymousImage: TImage;
AutoShareImage: TImage;
ScreenSaverImage: TImage;
ScreenSaverPassImage: TImage;
MSSQLPortImage: TImage;
AuditLevelImage: TImage;
XP_CMDShellImage: TImage;
procedure FormShow(Sender: TObject);
procedure CancelClick(Sender: TObject);
procedure CADClick(Sender: TObject);
procedure ApplyClick(Sender: TObject);
procedure RestrictAnonymousClick(Sender: TObject);
procedure AutoShareClick(Sender: TObject);
procedure ScreenSaverClick(Sender: TObject);
procedure ScreenSaverPassClick(Sender: TObject);
procedure ScreenSaverTimeChange(Sender: TObject);
procedure OpenSecurityOptionsClick(Sender: TObject);
procedure OpenUserRightsClick(Sender: TObject);
procedure ScreenSaverTimeExit(Sender: TObject);
procedure MSSQLPortChange(Sender: TObject);
procedure XP_CMDShellClick(Sender: TObject);
procedure RecommendClick(Sender: TObject);
procedure AuditLevelChange(Sender: TObject);
procedure OpenSecuritySettingsSystem32Click(Sender: TObject);
private
{ Private declarations }
procedure CheckFS;
procedure GetCADSettings;
procedure SetCADSettings;
procedure GetRestrictAnonymousSettings;
procedure SetRestrictAnonymousSettings;
procedure GetAutoShareSettings;
procedure SetAutoShareSettings;
procedure GetScreenSaverSettings;
procedure SetScreenSaverSettings;
procedure GetMSSQLPortSettings;
procedure SetMSSQLPortSettings;
procedure GetXP_CMDShellSettings;
procedure SetXP_CMDShellSettings;
procedure GetAuditLevelSettings;
procedure SetAuditLevelSettings;
procedure CheckApply;
public
{ Public declarations }
end;
var
main: Tmain;
//переменные для сохранения старых настроек и реализации функции "Отмена"
CAD_Old, RestrictAnonymous_Old, AutoShare_Old:integer;
ScreenSaver_Old, ScreenSaverPass_Old, ScreenSaverTime_Old:integer;
MSSQLPort_Old, XP_CMDShell_Old, AuditLevel_Old:integer;
implementation
{$R *.dfm}
//процедура проверки типа файловой системы
procedure Tmain.CheckFS();
var
VolumeName,
FileSystemName : array [0..MAX_PATH-1] of Char;
VolumeSerialNo : DWord;
MaxComponentLength,FileSystemFlags: Cardinal;
i: Char;
C: String;
ListItem:TListItem;
begin
for i := 'B' to 'Z' do //начинаем с B, чтобы не обращалось к дисководу
begin
C := i+':\';
if (GetVolumeInformation(PChar(C),VolumeName,MAX_PATH,@VolumeSerialNo,
MaxComponentLength,FileSystemFlags, FileSystemName,MAX_PATH)) and
(GetDriveType(PChar(C))<>DRIVE_REMOTE)
then begin
ListItem:=ListView1.Items.Add();
ListItem.Caption:=C;
ListItem.SubItems.Add(FileSystemName);
if FileSystemName='NTFS' then ListItem.ImageIndex:=0
else ListItem.ImageIndex:=1;
end;
end;
end;
// получает, отмечает степень соответствия рекомендованным установкам и
//выводит информацию об использовании комбинации клавиш Ctrl+Alt+Del при входе
procedure Tmain.GetCADSettings;
var
reg:TRegistry;
value:integer;
begin
reg:=TRegistry.Create;
try
reg.RootKey:=HKEY_LOCAL_MACHINE;
if not reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\', False) then MessageDlg('Невозможно открыть ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\',mtError, [mbOk], 0);
if reg.ValueExists('DisableCAD') then begin
value:=reg.ReadInteger('DisableCAD');
CAD_Old:=value;
CAD.Tag:=value;
if value=1 then begin
CAD.Checked:=True;
CAD.Hint:='Включено';
end else begin
CAD.Checked:=False;
CAD.Hint:='Выключено';
end;
end
else begin
CAD_Old:=-1;
CAD.Tag:=-1;
CAD.State:=cbGrayed;
CAD.Hint:='Не установлено';
end;
finally
reg.Free;
end;
if CAD.Tag=CCAD then ImageList.GetIcon(0, CADImage.Picture.Icon)
else ImageList.GetIcon(1, CADImage.Picture.Icon);
end;
//производит изменение параметра в реестре в соответствии с произведенными настройками
procedure Tmain.SetCADSettings;
var
reg:TRegistry;
begin
reg:=TRegistry.Create;
try
reg.RootKey:=HKEY_LOCAL_MACHINE;
if not reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\', False) then MessageDlg('Невозможно открыть ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\',mtError, [mbOk], 0);
CAD_Old:=CAD.Tag;
if CAD.Tag<>-1 then reg.WriteInteger('DisableCAD',CAD.Tag)
else reg.DeleteValue('DisableCAD');
finally
reg.Free;
end;
end;
//получает, отмечает степень соответствия рекомендованным установкам и
//выводит информацию о настройке анонимного сетевого доступа к системе
procedure Tmain.GetRestrictAnonymousSettings;
var
reg:TRegistry;
value:integer;
begin
reg:=TRegistry.Create;
try
reg.RootKey:=HKEY_LOCAL_MACHINE;
if not reg.OpenKey('\SYSTEM\CurrentControlSet\Control\Lsa', False) then MessageDlg('Невозможно открыть ключ реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa', mtError, [mbOk], 0);
if not reg.ValueExists('restrictanonymous') then reg.WriteInteger('restrictanonymous', 0);
value:=reg.ReadInteger('restrictanonymous');
RestrictAnonymous_Old:=value;
RestrictAnonymous.Tag:=value;
if value=1 then begin
RestrictAnonymous.Checked:=True;
RestrictAnonymous.Hint:='Включено';
end else begin
RestrictAnonymous.Checked:=False;
RestrictAnonymous.Hint:='Выключено';
end;
finally
reg.Free;
end;
if RestrictAnonymous.Tag=CRestrictAnonymous then ImageList.GetIcon(0, RestrictAnonymousImage.Picture.Icon)
else ImageList.GetIcon(1, RestrictAnonymousImage.Picture.Icon);
end;
//производит изменение параметра в реестре в соответствии с произведенными настройками
procedure Tmain.SetRestrictAnonymousSettings;
var
reg:TRegistry;
begin
reg:=TRegistry.Create;
try
reg.RootKey:=HKEY_LOCAL_MACHINE;
if not reg.OpenKey('\SYSTEM\CurrentControlSet\Control\Lsa', False) then MessageDlg('Невозможно открыть ключ реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa', mtError, [mbOk], 0);
RestrictAnonymous_Old:=RestrictAnonymous.Tag;
reg.WriteInteger('restrictanonymous',RestrictAnonymous.Tag)
finally
reg.Free;
end;
end;
//получает, отмечает степень соответствия рекомендованным установкам и
//выводит информацию о настройке доступности общих ресурсов (ADMIN$, C$, D$ и т.д.)
procedure Tmain.GetAutoShareSettings;
var
reg:TRegistry;
value:integer;
begin
reg:=TRegistry.Create;
try
reg.RootKey:=HKEY_LOCAL_MACHINE;
if not reg.OpenKey('\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters', False) then MessageDlg('Невозможно открыть ключ реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters', mtError, [mbOk], 0);
if not reg.ValueExists('AutoShareWks') then reg.WriteInteger('AutoShareWks', 1);
value:=reg.ReadInteger('AutoShareWks');
AutoShare_Old:=value;
AutoShare.Tag:=value;
if value=1 then begin
AutoShare.Checked:=True;
AutoShare.Hint:='Включено';
end else begin
AutoShare.Checked:=False;
AutoShare.Hint:='Выключено';
end;
finally
reg.Free;
end;
if AutoShare.Tag=CAutoShare then ImageList.GetIcon(0, AutoShareImage.Picture.Icon)
else ImageList.GetIcon(1, AutoShareImage.Picture.Icon);
end;
//производит изменение параметра в реестре в соответствии с произведенными настройками
procedure Tmain.SetAutoShareSettings;
var
reg:TRegistry;
begin
reg:=TRegistry.Create;
try
reg.RootKey:=HKEY_LOCAL_MACHINE;
if not reg.OpenKey('\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters', False) then MessageDlg('Невозможно открыть ключ реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters', mtError, [mbOk], 0);
AutoShare_Old:=AutoShare.Tag;
reg.WriteInteger('AutoShareWks',AutoShare.Tag)
finally
reg.Free;
end;
end;
//получает, отмечает степень соответствия рекомендованным установкам и
//выводит информацию о настройке параметров хранителя экрана
procedure Tmain.GetScreenSaverSettings;
var
reg:TRegistry;
value:string;
begin
reg:=TRegistry.Create;
try
reg.RootKey:=HKEY_CURRENT_USER;
if not reg.OpenKey('\Control Panel\Desktop', False) then MessageDlg('Невозможно открыть ключ реестра HKEY_CURRENT_USER\Control Panel\Desktop', mtError, [mbOk], 0);
value:=reg.ReadString('ScreenSaveActive');
ScreenSaver_Old:=StrToInt(value);
ScreenSaver.Tag:=StrToInt(value);
if value='1' then begin
ScreenSaver.Checked:=True;
ScreenSaver.Hint:='Включено';
ScreenSaverPass.Enabled:=True;
ScreenSaverTime.Enabled:=True;
Label1.Enabled:=True;
Label2.Enabled:=True;
end else begin
ScreenSaver.Checked:=False;
ScreenSaver.Hint:='Выключено';
ScreenSaverPass.Enabled:=False;
ScreenSaverTime.Enabled:=False;
Label1.Enabled:=False;
Label2.Enabled:=False;
end;
value:=reg.ReadString('ScreenSaverIsSecure');
ScreenSaverPass_Old:=StrToInt(value);
ScreenSaverPass.Tag:=StrToInt(value);
if value='1' then begin
ScreenSaverPass.Checked:=True;
ScreenSaverPass.Hint:='Включено';
end else begin
ScreenSaverPass.Checked:=False;
ScreenSaverPass.Hint:='Выключено';
end;
value:=reg.ReadString('ScreenSaveTimeOut');
ScreenSaverTime_Old:=StrToInt(value) div 60;
ScreenSaverTime.Tag:=StrToInt(value) div 60;
ScreenSaverTime.Value:=StrToInt(value) div 60;
ScreenSaverTime.Hint:='Хранитель экрана включится через '+IntToStr(ScreenSaverTime.Tag)+' мин. неактивности компьютера';
finally
reg.Free;
end;
if ScreenSaver.Tag=CScreenSaver then ImageList.GetIcon(0, ScreenSaverImage.Picture.Icon)
else ImageList.GetIcon(1, ScreenSaverImage.Picture.Icon);
if ScreenSaverPass.Tag=CScreenSaverPass then ImageList.GetIcon(0, ScreenSaverPassImage.Picture.Icon)
else ImageList.GetIcon(1, ScreenSaverPassImage.Picture.Icon);
end;
//производит изменение параметра в реестре в соответствии с произведенными настройками
procedure Tmain.SetScreenSaverSettings;
var
reg:TRegistry;
begin
reg:=TRegistry.Create;
try
reg.RootKey:=HKEY_CURRENT_USER;
if not reg.OpenKey('\Control Panel\Desktop', False) then MessageDlg('Невозможно открыть ключ реестра HKEY_CURRENT_USER\Control Panel\Desktop', mtError, [mbOk], 0);
ScreenSaver_Old:=ScreenSaver.Tag;
reg.WriteString('ScreenSaveActive',IntToStr(ScreenSaver.Tag));
ScreenSaverPass_Old:=ScreenSaverPass.Tag;
reg.WriteString('ScreenSaverIsSecure',IntToStr(ScreenSaverPass.Tag));
ScreenSaverTime_Old:=ScreenSaverTime.Tag;
// reg.WriteString('ScreenSaveTimeOut',IntToStr(ScreenSaverTime.Tag*60));
SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT,ScreenSaverTime.Tag*60,nil,SPIF_UPDATEINIFILE);
if ScreenSaver.Tag=1 then
reg.WriteString('SCRNSAVE.EXE','C:\WINDOWS\system32\scrnsave.scr')
else
if reg.ValueExists('SCRNSAVE.EXE') then reg.DeleteValue('SCRNSAVE.EXE');
finally
reg.Free;
end;
end;
//получает, отмечает степень соответствия рекомендованным установкам и
//выводит информацию о номере слушающего порта MS SQL сервера
procedure Tmain.GetMSSQLPortSettings;
var
reg:TRegistry;
value:string;
begin
reg:=TRegistry.Create;
try
reg.RootKey:=HKEY_LOCAL_MACHINE;
if not reg.OpenKey('\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib\Tcp', False) then begin
MessageDlg('Невозможно открыть ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib\Tcp', mtError, [mbOk], 0);
MSSQLPort.Enabled:=False;
Label6.Enabled:=False;
end else begin
value:=reg.ReadString('TcpPort');
MSSQLPort_Old:=StrToInt(value);
MSSQLPort.Tag:=StrToInt(value);
MSSQLPort.Value:=StrToInt(value);
MSSQLPort.Hint:='MS SQL Server принимает соединения на '+value+' порту';
end;
finally
reg.Free;
end;
if (MSSQLPort.Enabled) then begin
if (MSSQLPort.Tag=CMSSQLPort) then ImageList.GetIcon(0, MSSQLPortImage.Picture.Icon)
else ImageList.GetIcon(1, MSSQLPortImage.Picture.Icon);
end;
end;
//производит изменение параметра в реестре в соответствии с произведенными настройками
procedure Tmain.SetMSSQLPortSettings;
var
reg:TRegistry;
begin
reg:=TRegistry.Create;
try
reg.RootKey:=HKEY_LOCAL_MACHINE;
if not reg.OpenKey('\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib\Tcp', False) then MessageDlg('Невозможно открыть ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib\Tcp', mtError, [mbOk], 0);
MSSQLPort_Old:=MSSQLPort.Tag;
reg.WriteString('TcpPort',IntToStr(MSSQLPort.Tag))
finally
reg.Free;
end;
end;
//получает, отмечает степень соответствия рекомендованным установкам и
//выводит информацию о настройке расширенной хранимой процедуры xp_cmdshell
procedure Tmain.GetXP_CMDShellSettings;
begin
if MSSQLPort.Enabled then begin
try
try
ADOConnection.Open;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('select id from dbo.sysobjects where id = object_id('+QuotedStr('[dbo].[xp_cmdshell]')+')');
ADOQuery.Open;
if ADOQuery.State=dsInactive then XP_CMDShell.Enabled:=False
else
if ADOQuery.RecordCount>0 then begin
XP_CMDShell_Old:=1;
XP_CMDShell.Tag:=1;
XP_CMDShell.Checked:=True;
XP_CMDShell.Hint:='Включено'
end else begin
XP_CMDShell_Old:=0;
XP_CMDShell.Tag:=0;
XP_CMDShell.Checked:=False;
XP_CMDShell.Hint:='Выключено'
end;
except
MessageDlg('Не удалось подключиться к локальной базе данных "." на компьютере', mtError, [mbOk], 0);
XP_CMDShell.Enabled:=False
end;
finally
ADOQuery.Close;
ADOConnection.Close;
end;
end
else XP_CMDShell.Enabled:=False;
if (XP_CMDShell.Enabled) then begin
if (XP_CMDShell.Tag=CXP_CMDShell) then ImageList.GetIcon(0, XP_CMDShellImage.Picture.Icon)
else ImageList.GetIcon(1, XP_CMDShellImage.Picture.Icon);
end;
end;
//производит изменение параметра в реестре в соответствии с произведенными настройками
procedure Tmain.SetXP_CMDShellSettings;
begin
if XP_CMDShell.Enabled then begin
if XP_CMDShell.Tag<>XP_CMDShell_Old then begin
try
try
ADOConnection.Open;
ADOQuery.SQL.Clear;
if XP_CMDShell.Checked then
ADOQuery.SQL.Add('exec sp_addextendedproc '+QuotedStr('xp_cmdshell')+', '+QuotedStr('xplog70.dll'))
else
ADOQuery.SQL.Add('exec sp_dropextendedproc '+QuotedStr('[dbo].[xp_cmdshell]'));
ADOQuery.ExecSQL;
except
MessageDlg('Не удалось подключиться к локальной базе данных "." на компьютере', mtError, [mbOk], 0);
XP_CMDShell.Enabled:=False
end;
finally
ADOConnection.Close;
XP_CMDShell_Old:=XP_CMDShell.Tag
end;
end;
end;
end;
//получает, отмечает степень соответствия рекомендованным установкам и
//выводит информацию о настройке уровня аудита MS SQL сервера
procedure Tmain.GetAuditLevelSettings;
var
reg:TRegistry;
value:integer;
begin
if MSSQLPort.Enabled then begin
reg:=TRegistry.Create;
try
reg.RootKey:=HKEY_LOCAL_MACHINE;
if not reg.OpenKey('\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer', False) then MessageDlg('Невозможно открыть ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer', mtError, [mbOk], 0);
value:=reg.ReadInteger('AuditLevel');
AuditLevel_Old:=value;
AuditLevel.ItemIndex:=value;
finally
reg.Free;
end;
end
else begin
AuditLevel.Enabled:=False;
Label7.Enabled:=False;
end;
if (AuditLevel.Enabled) then begin
if (AuditLevel.ItemIndex=CAuditLevel) then ImageList.GetIcon(0, AuditLevelImage.Picture.Icon)
else ImageList.GetIcon(1, AuditLevelImage.Picture.Icon);
end;
end;
//производит изменение параметра в реестре в соответствии с произведенными настройками
procedure Tmain.SetAuditLevelSettings;
var
reg:TRegistry;
begin
reg:=TRegistry.Create;
try
reg.RootKey:=HKEY_LOCAL_MACHINE;
if not reg.OpenKey('\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer', False) then MessageDlg('Невозможно открыть ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer', mtError, [mbOk], 0);
AuditLevel_Old:=AuditLevel.ItemIndex;
reg.WriteInteger('AuditLevel',AuditLevel.ItemIndex)
finally
reg.Free;
end;
end;
//процедура, вызываемая при открытии формы, задесь устанавливаем параметры оп умолчанию
//вызываем соответствеющие процедуры получения настроек
procedure Tmain.FormShow(Sender: TObject);
begin
MSSQLPort_Old:=1433;
AuditLevel_Old:=0;
XP_CMDShell_Old:=0;
CheckFS;
GetCADSettings;
GetRestrictAnonymousSettings;
GetAutoShareSettings;
GetScreenSaverSettings;
GetMSSQLPortSettings;
GetXP_CMDShellSettings;
GetAuditLevelSettings;
end;
//процедура обработки функции "Отмена"
procedure Tmain.CancelClick(Sender: TObject);
begin
case CAD_Old of
1: begin
CAD.Checked:=True;
CAD.Hint:='Включено';
end;
0: begin
CAD.Checked:=False;
CAD.Hint:='Выключено';
end;
-1: begin
CAD.State:=cbGrayed;
CAD.Hint:='Не установлено';
end;
end;
case RestrictAnonymous_Old of
1: begin
RestrictAnonymous.Checked:=True;
RestrictAnonymous.Hint:='Включено';
end;
0: begin
RestrictAnonymous.Checked:=False;
RestrictAnonymous.Hint:='Выключено';
end;
end;
case AutoShare_Old of
1: begin
AutoShare.Checked:=True;
AutoShare.Hint:='Включено';
end;
0: begin
AutoShare.Checked:=False;
AutoShare.Hint:='Выключено';
end;
end;
case ScreenSaver_Old of
1: begin
ScreenSaver.Checked:=True;
ScreenSaver.Hint:='Включено';
end;
0: begin
ScreenSaver.Checked:=False;
ScreenSaver.Hint:='Выключено';
end;
end;
case ScreenSaverPass_Old of
1: begin
ScreenSaverPass.Checked:=True;
ScreenSaverPass.Hint:='Включено';
end;
0: begin
ScreenSaverPass.Checked:=False;
ScreenSaverPass.Hint:='Выключено';
end;
end;
ScreenSaverTime.Value:=ScreenSaverTime_Old;
ScreenSaverTime.Hint:='Хранитель экрана включится через '+IntToStr(ScreenSaverTime.Tag)+' мин. неактивности компьютера';
MSSQLPort.Value:=MSSQLPort_Old;
MSSQLPort.Hint:='MS SQL Server принимает соединения на '+IntToStr(MSSQLPort.Value)+' порту';
case XP_CMDShell_Old of
1: begin
XP_CMDShell.Checked:=True;
XP_CMDShell.Hint:='Включено';
end;
0: begin
XP_CMDShell.Checked:=False;
XP_CMDShell.Hint:='Выключено';
end;
end;
AuditLevel.ItemIndex:=AuditLevel_Old;
end;
//процедура проверки необходимости применения параметров
procedure Tmain.CheckApply;
begin
if (CAD.Tag=CAD_Old) and (RestrictAnonymous.Tag=RestrictAnonymous_Old) and
(AutoShare.Tag=AutoShare_Old) and (ScreenSaver.Tag=ScreenSaver_Old) and
(ScreenSaverPass.Tag=ScreenSaverPass_Old) and (ScreenSaverTime.Tag=ScreenSaverTime_Old) and
(MSSQLPort.Tag=MSSQLPort_Old) and (XP_CMDShell.Tag=XP_CMDShell_Old) and
(AuditLevel.ItemIndex=AuditLevel_Old)
then Apply.Enabled:=False
else Apply.Enabled:=True;
end;
//процедура изменения настроек использования клавиш Ctrl+Alt+_Del при входе
//обрабатываются изменение настройки и соответствие рекомендуемым
procedure Tmain.CADClick(Sender: TObject);
begin
case CAD.State of
cbChecked: begin
CAD.Tag:=1;
CAD.Hint:='Включено'
end;
cbUnchecked: begin
CAD.Tag:=0;
CAD.Hint:='Выключено'
end;
cbGrayed: begin
CAD.Tag:=-1;
CAD.Hint:='Не установлено'
end;
end;
if CAD.Tag=CAD_Old then CAD.Font.Style:=[]
else CAD.Font.Style:=[fsBold];
CheckApply;
if CAD.Tag=CCAD then ImageList.GetIcon(0, CADImage.Picture.Icon)
else ImageList.GetIcon(1, CADImage.Picture.Icon);
end;
//процедура сохранения измененных настроек
procedure Tmain.ApplyClick(Sender: TObject);
begin
if CAD.Tag<>CAD_Old then SetCADSettings;
if RestrictAnonymous.Tag<>RestrictAnonymous_Old then SetRestrictAnonymousSettings;
if AutoShare.Tag<>AutoShare_Old then SetAutoShareSettings;
if (ScreenSaver.Tag<>ScreenSaver_Old) or (ScreenSaverPass.Tag<>ScreenSaverPass_Old) or
(ScreenSaverTime.Tag<>ScreenSaverTime_Old)
then SetScreenSaverSettings;
if MSSQLPort.Tag<>MSSQLPort_Old then SetMSSQLPortSettings;
if XP_CMDShell.Tag<>XP_CMDShell_Old then SetXP_CMDShellSettings;
if AuditLevel.ItemIndex<>AuditLevel_Old then SetAuditLevelSettings;
Apply.Enabled:=False;
RestrictAnonymous.Font.Style:=[];
AutoShare.Font.Style:=[];
ScreenSaver.Font.Style:=[];
ScreenSaverPass.Font.Style:=[];
ScreenSaverTime.Font.Style:=[];
Label1.Font.Style:=[];
Label2.Font.Style:=[];
MSSQLPort.Font.Style:=[];
Label6.Font.Style:=[];
XP_CMDShell.Font.Style:=[];
AuditLevel.Font.Style:=[];
Label7.Font.Style:=[];
end;
//процедура изменения настроек анонимного доступа к системе
//обрабатываются изменение настройки и соответствие рекомендуемым
procedure Tmain.RestrictAnonymousClick(Sender: TObject);
begin
case RestrictAnonymous.State of
cbChecked: begin
RestrictAnonymous.Tag:=1;
RestrictAnonymous.Hint:='Включено'
end;
cbUnchecked: begin
RestrictAnonymous.Tag:=0;
RestrictAnonymous.Hint:='Выключено'
end;
end;
if RestrictAnonymous.Tag=RestrictAnonymous_Old then RestrictAnonymous.Font.Style:=[]
else RestrictAnonymous.Font.Style:=[fsBold];
CheckApply;
if RestrictAnonymous.Tag=CRestrictAnonymous then ImageList.GetIcon(0, RestrictAnonymousImage.Picture.Icon)
else ImageList.GetIcon(1, RestrictAnonymousImage.Picture.Icon);
end;
//процедура изменения настроек ресурсов общего доступа (ADMIN$, C$ И т.д.)
//обрабатываются изменение настройки и соответствие рекомендуемым
procedure Tmain.AutoShareClick(Sender: TObject);
begin
case AutoShare.State of
cbChecked: begin
AutoShare.Tag:=1;
AutoShare.Hint:='Включено'
end;
cbUnchecked: begin
AutoShare.Tag:=0;
AutoShare.Hint:='Выключено'
end;
end;
if AutoShare.Tag=AutoShare_Old then AutoShare.Font.Style:=[]
else AutoShare.Font.Style:=[fsBold];
CheckApply;
if AutoShare.Tag=CAutoShare then ImageList.GetIcon(0, AutoShareImage.Picture.Icon)
else ImageList.GetIcon(1, AutoShareImage.Picture.Icon);
end;
//процедура изменения настроек хранителя экрана:активность
//обрабатываются изменение настройки и соответствие рекомендуемым
procedure Tmain.ScreenSaverClick(Sender: TObject);
begin
case ScreenSaver.State of
cbChecked: begin
ScreenSaver.Tag:=1;
ScreenSaver.Hint:='Включено';
ScreenSaverPass.Enabled:=True;
ScreenSaverTime.Enabled:=True;
Label1.Enabled:=True;
Label2.Enabled:=True;
end;
cbUnchecked: begin
ScreenSaver.Tag:=0;
ScreenSaver.Hint:='Выключено';
ScreenSaverPass.Enabled:=False;
ScreenSaverTime.Enabled:=False;
Label1.Enabled:=False;
Label2.Enabled:=False;
end;
end;
if ScreenSaver.Tag=ScreenSaver_Old then ScreenSaver.Font.Style:=[]
else ScreenSaver.Font.Style:=[fsBold];
CheckApply;
if ScreenSaver.Tag=CScreenSaver then ImageList.GetIcon(0, ScreenSaverImage.Picture.Icon)
else ImageList.GetIcon(1, ScreenSaverImage.Picture.Icon);
end;
//процедура изменения настроек хранителя экрана:защита паролем
//обрабатываются изменение настройки и соответствие рекомендуемым
procedure Tmain.ScreenSaverPassClick(Sender: TObject);
begin
case ScreenSaverPass.State of
cbChecked: begin
ScreenSaverPass.Tag:=1;
ScreenSaverPass.Hint:='Включено'
end;
cbUnchecked: begin
ScreenSaverPass.Tag:=0;
ScreenSaverPass.Hint:='Выключено'
end;
end;
if ScreenSaverPass.Tag=ScreenSaverPass_Old then ScreenSaverPass.Font.Style:=[]
else ScreenSaverPass.Font.Style:=[fsBold];
CheckApply;
if ScreenSaverPass.Tag=CScreenSaverPass then ImageList.GetIcon(0, ScreenSaverPassImage.Picture.Icon)
else ImageList.GetIcon(1, ScreenSaverPassImage.Picture.Icon);
end;
//процедура изменения настроек хранителя экрана:время неактивности
//обрабатываются изменение настройки и соответствие рекомендуемым
procedure Tmain.ScreenSaverTimeChange(Sender: TObject);
begin
if ScreenSaverTime.Text<>'' then begin
ScreenSaverTime.Tag:=ScreenSaverTime.Value;
ScreenSaverTime.Hint:='Хранитель экрана включится через '+IntToStr(ScreenSaverTime.Tag)+' мин. неактивности компьютера';
if ScreenSaverTime.Tag=ScreenSaverTime_Old then begin
ScreenSaverTime.Font.Style:=[];
Label1.Font.Style:=[];
Label2.Font.Style:=[];
end
else begin
ScreenSaverTime.Font.Style:=[fsBold];
Label1.Font.Style:=[fsBold];
Label2.Font.Style:=[fsBold];
end;
end else
ScreenSaverTime.Hint:='Хранитель экрана включится через ??? мин. неактивности компьютера';
CheckApply;
end;
//обработка пустого значения для времени неактивности
procedure Tmain.ScreenSaverTimeExit(Sender: TObject);
begin
if ScreenSaverTime.Text='' then ScreenSaverTime.Value:=1;
end;
//процедура запуска оснастки MMC "Security Options"
procedure Tmain.OpenSecurityOptionsClick(Sender: TObject);
var
handle:HWND;
begin
ShellExecute(handle, 'open', 'SecurityOptions.msc', nil, nil, SW_SHOWNORMAL);
end;
//процедура запуска оснастки MMC "User Rights Assignment"
procedure Tmain.OpenUserRightsClick(Sender: TObject);
var
handle:HWND;
begin
ShellExecute(handle, 'open', 'UserRights.msc', nil, nil, SW_SHOWNORMAL)
end;
//процедура изменения настроек слушающего порта MS SQL сервера
//обрабатываются изменение настройки и соответствие рекомендуемым
procedure Tmain.MSSQLPortChange(Sender: TObject);
begin
if MSSQLPort.Text<>'' then begin
MSSQLPort.Tag:=MSSQLPort.Value;
MSSQLPort.Hint:='MS SQL Server принимает соединения на '+IntToStr(MSSQLPort.Value)+' порту';
if MSSQLPort.Tag=MSSQLPort_Old then begin
MSSQLPort.Font.Style:=[];
Label6.Font.Style:=[];
end
else begin
MSSQLPort.Font.Style:=[fsBold];
Label6.Font.Style:=[fsBold];
end;
end else
MSSQLPort.Hint:='MS SQL Server принимает соединения на ??? порту';
CheckApply;
if (MSSQLPort.Enabled) then begin
if (MSSQLPort.Tag=CMSSQLPort) then ImageList.GetIcon(0, MSSQLPortImage.Picture.Icon)
else ImageList.GetIcon(1, MSSQLPortImage.Picture.Icon);
end;
end;
//процедура изменения настроек расширенной хранимой процедуры xp_cmdshell
//обрабатываются изменение настройки и соответствие рекомендуемым
procedure Tmain.XP_CMDShellClick(Sender: TObject);
begin
case XP_CMDShell.State of
cbChecked: begin
XP_CMDShell.Tag:=1;
XP_CMDShell.Hint:='Включено'
end;
cbUnchecked: begin
XP_CMDShell.Tag:=0;
XP_CMDShell.Hint:='Выключено'
end;
end;
if XP_CMDShell.Tag=XP_CMDShell_Old then XP_CMDShell.Font.Style:=[]
else XP_CMDShell.Font.Style:=[fsBold];
CheckApply;
if (XP_CMDShell.Enabled) then begin
if (XP_CMDShell.Tag=CXP_CMDShell) then ImageList.GetIcon(0, XP_CMDShellImage.Picture.Icon)
else ImageList.GetIcon(1, XP_CMDShellImage.Picture.Icon);
end;
end;
//процедура установки рекомендуемых настроек
procedure Tmain.RecommendClick(Sender: TObject);
begin
CAD.Checked:=CCAD=1;
CADClick(Sender);
RestrictAnonymous.Checked:=CRestrictAnonymous=1;
RestrictAnonymousClick(Sender);
AutoShare.Checked:=CAutoShare=1;
AutoShareClick(Sender);
ScreenSaver.Checked:=CScreenSaver=1;
ScreenSaverClick(Sender);
ScreenSaverPass.Checked:=CScreenSaverPass=1;
ScreenSaverPassClick(Sender);
if MSSQLPort.Enabled then begin
MSSQLPort.Value:=CMSSQLPort;
MSSQLPortChange(Sender);
end;
if XP_CMDShell.Enabled then begin
XP_CMDShell.Checked:=CXP_CMDShell=1;
XP_CMDShellClick(Sender);
end;
if AuditLevel.Enabled then begin
AuditLevel.ItemIndex:=CAuditLevel;
AuditLevelChange(Sender);
end;
Apply.SetFocus;
end;
//процедура изменения настроек уровня аудита MS SQL сервера
//обрабатываются изменение настройки и соответствие рекомендуемым
procedure Tmain.AuditLevelChange(Sender: TObject);
begin
if AuditLevel.ItemIndex=AuditLevel_Old then begin
AuditLevel.Font.Style:=[];
Label7.Font.Style:=[];
end
else begin
AuditLevel.Font.Style:=[fsBold];
Label7.Font.Style:=[fsBold];
end;
CheckApply;
if (AuditLevel.Enabled) then begin
if (AuditLevel.ItemIndex=CAuditLevel) then ImageList.GetIcon(0, AuditLevelImage.Picture.Icon)
else ImageList.GetIcon(1, AuditLevelImage.Picture.Icon);
end;
end;
//процедура запуска диалога настроек безопасности для директории %systemroot%/system32
procedure Tmain.OpenSecuritySettingsSystem32Click(Sender: TObject);
begin
JvObjectPropertiesDialog.Execute;
end;
end.