суббота, 20 августа 2011 г.

Запуск cipher через контекстное меню дисков в окне Проводника

Встроенная в ОС Windows утилита cipher может быть использована для зачистки свободного пространства на диске. Для этого необходимо в командной строке выполнить команду cipher /W:C:, т.о. будет произведена зачистка свободного пространства на диске C: (без потери хранимых на нем данных).

Но вызывать утилиту из командной строки не очень удобно. Вот утилиту форматирования вызвать легко — ссылка на нее находится в контекстном меню дисков в Проводнике Windows в пункте "Форматировать...". Также можно поступить и с cipher — добавить ссылку на нее в контекстное меню дисков.

Для этого необходимо:
1) войти в систему с правами администратора;
2) запустить редактор реестра (regedit);
3) развернуть раздел реестра HKEY_CLASSES_ROOT\Drive\shell;
4) в данном разделе создать раздел с названием "cipher" (в принципе, название может быть любым) и в значении "по умолчанию" данного раздела указать "Очистка своб. места" (т.е. указать наименование пункта контекстного меню);


5) в созданном разделе "cipher" создать еще один раздел c именем "command" и присвоить значению "по умолчанию" созданного раздела "cipher /W:%1";


6) теперь в окне "Мой компьютер" в контекстном меню (всех пользователей), отображаемом по клику правой кнопкой мыши на диск, будет содержаться пункт, запускающий cipher для данного диска:


Способ проверен в Windows XP, в других версиях ОС, думаю, будет работать тоже.

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

воскресенье, 19 июня 2011 г.

Граббер (бэкап) лога службы DHCP Windows Server 2003 на PowerShell 2.0

Логи службы DHCP Windows Server 2003 хранятся в папке C:\Windows\System32\DHCP в формате текстовых файлов с именами в формате DhcpSrvLog-Sat.log, где Sat - наименование дня. Соответственно, каждую неделю файлы затираются.

Для ежедневного копирования таких логов написан следующий небольшой скриптик, который:
  • необходимо запускать каждый день;
  • копирует лог DHCP за вчерашний день в заданную папку в файл с именем формата dhcp-20110615.log
  • по ходу копирования вырезает все лишнее из логов (описание кодов сообщений и заголовка).
  1. ##############################################################################  
  2. #  
  3. #  
  4. #   Граббер логов службы Windows DHCP  
  5. #   =================================   
  6. #  
  7. #  
  8. # Производит копирование логов Windows DHCP за вчерашний день в папку с   
  9. # бэкапами. При копировании производится удаление из логов ненужной   
  10. # информации: описания кодов событий, заголовка и т.п.  
  11. #  
  12. # Для успешной работы по сбору логов DHCP необходимо запускать данный скрипт  
  13. # ежедневно.  
  14. #  
  15. # Формат именования выходного файла: dhcp-20110615.log, где:  
  16. # - 20110615 - указатель на дату исходного лога 15.06.2011.  
  17. #  
  18. #  
  19. ##############################################################################  
  20. #  
  21. #  
  22. # ПАРАМЕТРЫ ЗАПУСКА СКРИПТА  
  23. # ----------------------------  
  24. param([string]$outDir="", [switch]$force=$false, [switch]$help)  
  25.   
  26. function GetHelp {  
  27.     echo " 
  28. ОПИСАНИЕ  
  29.     Копирование логов Windows DHCP за вчерашний день в папку с бэкапами. 
  30.     При копировании производится удаление из логов ненужной информации:   
  31.     описания кодов событий, заголовка и т.п. 
  32.  
  33. СИНТАКСИС 
  34.     .\DhcpLogGrabber.ps1 -outdir <string> 
  35.                          [-force]  
  36.                          [-help] 
  37.  
  38. ПАРАМЕТРЫ 
  39.     -outdir 
  40.         Папка для помещения логов. 
  41.  
  42.     -force 
  43.         Если параметр указан, файл с логом будет скопирован в папку 
  44.         бэкапами, даже если там уже существует файл с таким именем. 
  45.  
  46.     -help 
  47.         Вывод справки (этой). Дополнительную информацию ищите в теле скрипта."  
  48. }  
  49.   
  50. if ($help) { GetHelp ; exit }  
  51.   
  52. #  
  53. ##############################################################################  
  54. #  
  55. #  
  56. # КОНФИГУРИРОВАНИЕ  
  57. # -------------------   
  58.   
  59. # Папка с логами службы Windows DHCP.  
  60. $logsDir = "c:\windows\system32\dhcp"  
  61.   
  62. #  
  63. ##############################################################################  
  64.   
  65.   
  66. if (-not $outDir)   
  67.     { echo "Не указана папка для помещения логов." ; GetHelp ; exit 1 }  
  68.   
  69. # Проверка наличия папки с логами.  
  70. if (-not (Test-Path $logsDir))   
  71.     { echo "Папки ""$logsDir"" не существует" ; exit 1 }  
  72.   
  73.   
  74. # DHCP хранит логи в файлах, именуемых в формате "DhcpSrvLog-Sat.log", где  
  75. # Sat - наименование дня. Для преобразования номера дня в его наименование  
  76. # используется данная матрица. Матрица составлена с учетом того, что при   
  77. # форматировании параметром %u объектов типа DateTime, воскресенье является  
  78. # нулевым днем, а суббота - 6-м.  
  79. $dayNames = @('Sun''Mon''Tue''Wed''Thu''Fri''Sat')  
  80.   
  81. # Вчерашняя дата и вчерашний номер дня.  
  82. $yesterday = (Get-Date).AddDays(-1)  
  83. $yesterdayNo = [int]($yesterday | Get-Date -uformat "%u")  
  84. $yesterdayT = $yesterday | Get-Date -uformat "%d.%m.%Y"  
  85.   
  86. # Получение необходимого пути к файлу с логом.  
  87. $logFilePath = "$logsDir\DhcpSrvLog-$($dayNames[$yesterdayNo]).log"  
  88.   
  89. # Если файла с логом нет, скрипт завершает работу.  
  90. if (-not (Test-Path $logFilePath))   
  91.     { echo "Лог за $yesterdayT отсутствует" ; exit }  
  92.   
  93. # Путь к выходному файлу.  
  94. $outLogPath = "$outDir\dhcp-$($yesterday | Get-Date -uformat "%Y%m%d").log"  
  95. if (-not (Test-Path $outDir))   
  96.     { New-Item $outDir -type directory | Out-Null }  
  97. if (-not (Test-Path $outDir))   
  98.     { echo "Невозможно создать папку ""$outDir""" ; exit 1 }  
  99.   
  100. # Если не указан параметр -force и выходной файл существует, работа  
  101. # скрипта завершается.  
  102. if ((Test-Path $outLogPath) -and (-not $force))   
  103.     { echo "Лог за $yesterdayT уже присутствует в папке назначения. Для автоматической замены, запустите скрипт с параметром -force." ; exit }  
  104.   
  105. # Из лога считываются все строки, являющиеся непосредственно записями событий,   
  106. # а не описаниями, и заносятся в выходной файл. Учитывая небольшой объем логов  
  107. # DHCP сервера, подход с фильтром строк приемлем.  
  108. Get-Content $logFilePath   
  109.   | ? { $_ -match "^(\d{2})," }   
  110.   | Out-File $outLogPath -encoding Unicode  
  111.   
  112. echo "Лог за $yesterdayT скопирован в $outLogPath"  

четверг, 19 мая 2011 г.

Дискреционное и мандатное разграничение доступа в СЗИ от НСД Secret Net 6.5

Определенное время назад для подготовки к экзамену по программно-аппаратной защите информации была составлена методичка в картинках, решающая один из вопросов, а именно:
Создать систему разграничения доступа к папкам и файлами на основе мандатного и дискреционного механизмов при помощи СЗИ от НСД Secret Net 6.5 и Windows XP Professional.

Задание

С использованием мандатного механизма разграничить доступ пользователей:
  • Ivan (уровень доступа — секретно);
  • Petr (уровень допуска — совершенно секретно
к трем созданным папкам со следующими метками конфиденциальности:
  • общедоступно;
  • секретно;
  • совершенно секретно.
С использованием дискреционного механизма разграничить доступ пользователей Ivan и Petr к
данным папкам следующим образом:
  • К общедоступной папке: пользователь Petr имеет полный доступ, Ivan — полный доступ, кроме возможности удаления самой папки.
  • К секретной папке: оба пользователя имеют доступ только на чтение и выполнение.
  • К совершенно секретной папке: у пользователя Ivan доступа нет, а пользователь Petr имеет полный доступ, кроме возможности удаления самой папки и запуска программ в ней.
Группа SYSTEM и Администраторы имеют полные права на данные папки. Все другие пользователи — не имеют никаких прав доступа.

Исходные данные

  • Версия СЗИ: Secret Net 6.5.333.0 (автономная, демонстрационная, без ПАК «Соболь»).
  • Версия ОС: MS Windows XP Professional Service Pack 3 (чистая).
  • На диске C файловая система NTFS (обязательно).
  • Действия проводятся в виртуальной машине VMWare.
  • VMWare Tools установлены.

Методичка

Методичка в PDF для загрузки: Дискреционное и мандатное разграничение доступа в СЗИ от НСД Secret Net [PDF]

Подготавливали методичку Басенко А.О., наш преподаватель, и мну.

PS

Демонстрационную версию Secret Net можно попросить у самих разработчиков. Высылают в течении пары часов. http://www.securitycode.ru/products/demo/

среда, 11 мая 2011 г.

О невозможности контролировать флешки, подключаемые через USBIP системой контроля устройств Secret Net

В WTWare встроена замечательная возможность: перенаправлять USB-порты терминалок (share_usb) таким образом, что все устройства, подключаемые к терминалкам по данным портам, получаются как бы "физически" подключенными к серверу.

Реализовано это дело с помощью USBIP и службы от создателя WTWare, поставляемую вместе с этим продуктом.

Втыкаем в терминалку USB-принтер и в ту же секунду на сервере появляется "новое устройство".
Втыкаем в терминал флешку и она обнаруживается как съемный диск (не удаленный, а именно съемный!) — копируй, удаляй, форматируй.

Но, реализовать контроль таких флешек по идентификатору средствами Secret Net не удалось. В логах выдает ошибку Ошибка при сопоставлении логического диска L с устройством. Доступ к этому диску будет запрещен.

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

Гарантированное уничтожение не испытывал.

Тесты проводились на:
  • Windows 2003 Server SP2 (не R2);
  • WTWare 4.9.27;
  • preview-версии драйвера USBIP для винды;
  • Secret Net 6.5.333.17 (автономная).
Т.к. у в нашей ИСПДн К1 терминальных клиентов мало (5 шт), было решено закупить USB-Extender-ы, выделить каждому пользователю (учетке) по личной флешке и разграничить доступ к ним средствами контроля устройств Secret Net.