Опубликован: 20.02.2006 | Уровень: специалист | Доступ: платный
Лекция 8:

Средства анализа и управления

Платформы для NCC

С самого начала мы решили, что будем писать программу для ряда платформ, называемого LAMP (Linux, Apache, MySQL и Perl).

  • Linux: По очевидным причинам Linux предлагает наибольшую мобильность и наименьшую стоимость использования. Однако нет причин, которые препятствуют системе выполняться на других разновидностях UNIX с небольшими модификациями. Ее можно также перенести на платформу на базе Windows, такую как Perl for Windows.
  • Apache: Сервер Apache был также выбран в связи с открытостью исходных текстов и потому, что он является одним из наиболее популярных web-серверов. Он явился самым логичным выбором, поскольку web-сервер должен использоваться и для других средств. Кроме него, эта система будет выполняться на любом поддерживающем PHP web-сервере, включая IIS.
  • MySQL: Имеется несколько хороших баз данных с открытыми исходными текстами, включая Postgresql и другие. Мы выбрали MySQL, потому что были лучше всего с ней знакомы, а требования в лицензии были самыми простыми. Как и Apache, мы уже применяли MySQL для своих баз данных ACID.
  • Perl: Конечно, существует множество интерпретируемых языков, но мы выбрали Perl потому, что он один из самых мобильных, не требует компиляции и легко модифицируем для третьих сторон.

Основываясь на архитектуре LAMP, мы начали создавать средство, удовлетворяющее нашим потребностям. Сначала мы написали план проекта, детализировавший задуманную работу. Затем мы разбили задачу на подзадачи с учетом имеющихся у нас навыков. Мы определили программные элементы, которые потребуются для нашей системы, включая процедуры Perl, PHP и MySQL, командные файлы, а также текстовые файлы документации. Табл. 8.6 содержит список всех необходимых элементов проекта вместе с описанием их назначения.

Таблица 8.6. Элементы проекта NCC
Тип Элемент Описание
Процедура Perl ncc.pl Запускается с помощью cron и выстраивает очередь сканирований, готовых к выполнению
Процедура Perl ncc-client.pl Удаляет запланированные сканирования из очереди, вызывает команду для их выполнения, а затем осуществляет преобразование для переноса файлов .nbe (по мере их получения) в базу данных MySQL
Процедура Perl ncc-daily.pl Посылает ежедневные итоговые электронные сообщения и очищает очередь
Процедура PHP Main.php и другие вспомогательные php-файлы Интерфейс для ввода данных в таблицу расписания; состоит из нескольких файлов
Процедура PHP Reports.php Интерфейс для просмотра базы данных MySQL, модификация версий NPI; состоит из нескольких файлов
База данных MySQL База данных NCC Модель базы данных сканирований, внутренняя для программы базы данных MySQL
Процедура MySQL ncc.mysql Создает начальную базу данных
Вспомогательная процедура install.pl Процедура для создания элемента для cron, вызов процедуры MySQL, копирование исполнимых файлов в /bin и файла php в Web
Текстовый файл ncc.ini Переменные окружения для процедур Perl и PHP, имена баз данных, расположение файлов, адреса электронной почты для уведомлений и т.д.
Текстовый файл INSTALL, README и т.д. Несколько файлов с инструкциями по установке, эксплуатационными инструкциями и другими полезными данными

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

Несмотря на то, что потоки данных были аналогичны NPI, имелись и некоторые существенные различия. Мы разработали диаграмму этих потоков, чтобы можно было проследить все логические связи между системами. На рис. 8.11 показана логическая архитектура NCC.

Логическая архитектура NCC

Рис. 8.11. Логическая архитектура NCC

Для проекта мы создали также web-сайт и страницу Sourceforge. Web-страница расположена по адресу http://www.netsecuritysvcs.com/ncc. Хотя мы решили, что в нашей группе достаточно талантов для завершения проекта, никогда не мешает познакомить других людей из сообщества открытого ПО с тем, что вы делаете. Кроме того, когда проект будет закончен, может понадобиться помощь при переносе на другие платформы и при добавлении новых возможностей.

Когда все приготовления были закончены, мы начали работу, как правило, проводя еженедельные встречи для отслеживания продвижений. Поскольку это было не основное занятие и у всех имелась другая работа, потребовалось около года для завершения программы в стадии бета-версии. Тем не менее, ее уже можно использовать и теперь, с помощью сетевого сообщества разработчиков, NCC можно расширять и улучшать. Написание NCC как проекта с открытыми исходными текстами, несомненно, требует несколько больше усилий для внешних взаимодействий, чем выполнение его как частного проекта, поскольку необходимо выполнить исследование существующих программ и интегрировать базы исходных текстов, но зато мы смогли воспользоваться существующими исходными текстами, что значительно сократило общее время разработки. Мы также знали, что если наша система станет популярной, ее можно будет перенести на другие платформы или даже использовать в качестве основы для более развитой программы, что нам только помогло бы. В конце концов, как показал опыт, в выигрыше осталась как моя компания, так и внешние пользователи.

Установка NCC

Предварительные требования NCC примерно те же, что и у средства NPI, описанного выше в этой лекции. Необходим поддерживающий PHP web-сервер (такой как Apache), база данных MySQL, клиент и сервер Nessus. Предполагается, что все это уже установлено и работает. Если вы еще этого не сделали, то обратитесь к предыдущим разделам этой лекции, посвященным настройке Apache и MySQL, и к "Сканеры уязвимостей" за инструкциями по установке Nessus.

Когда все будет на месте, можно приступать к установке NCC.

  1. Загрузите программу или возьмите ее с прилагаемого к книге компакт-диска.
  2. Распакуйте программу в отдельном каталоге, проверив, что он включен в ваш список поиска.
  3. Перейдите в каталог NCC и наберите ./install.pl. Запустится процедура установки NCC. (NCC не требует компиляции, поскольку он запрограммирован на интерпретируемых языках, таких как Perl и PHP.)

    Программа установки сначала проверит присутствие модулей Perl, необходимых NCC. Если она их не найдет, то придется загрузить соответствующие модули либо с дистрибутивных дисков, либо с помощью утилит CPAN, описанных в разделе "Установка Swatch" выше в этой лекции.

  4. Программа автоматически инициализирует базу данных и скопирует все файлы в подходящие места. Во время установки будет предложено ввести дополнительную информацию. В табл. 8.7 описаны эти параметры установки.
Таблица 8.7. Параметры установки NCC
Параметр Описание
Пользователь NCC Системный счет, от имени которого будет выполняться NCC. Рекомендуется создать специальный счет пользователя только для NCC
Каталог установки Можно выбрать один из двух стандартных вариантов, /usr/local/ncc или текущий каталог, либо определить свой собственный
Электронный адрес администратора NCC Адрес электронной почты администратора NCC, на который будут поступать все отчеты о ежедневной активности
Адрес отправителя результатов Адрес, откуда будут посылаться отчеты (важно для фильтрации спама)
Имя сервера MySQL Имя хоста или IP-адрес сервера MySQL для NCC, который должен быть задан как localhost, если сервер MySQL функционирует на той же машине
Имя базы данных для NCC Имя базы данных MySQL, создаваемой процедурой установки. Подразумеваемое значение ncc вполне подходит для большинства установок
Пользователь MySQL Допустимый пользователь системы MySQL, специально предназначенный для NCC
Пароль MySQL Пароль для указанного выше пользователя
Сервер Nessus Имя хоста или IP-адрес сервера Nessus (localhost, если Nessus и NCC выполняются на одной машине)
Порт Nessus Порт для подключения к серверу Nessus. Подразумеваемое значение 1241 годится, если только вы не изменили это значение на сервере Nessus
Имя пользователя Nessus Допустимый пользователь на сервере Nessus
Пароль Nessus Пароль для упомянутого выше пользователя.
Маршрут Nessus Маршрут к исполнимым файлам Nessus. Подразумеваемое значение соответствует стандартной установке Nessus
Каталог Temp Здесь NCC будет накапливать результаты сканирований, прежде чем импортировать их в базу данных. Можно заглянуть в этот каталог, если нужно найти необработанные файлы .nbe, которые были использованы
  1. Затем будет запрошена комбинация имени и пароля административного пользователя NCC. Этот пользователь будет администратором всей системы, поэтому тщательно выбирайте имя и пароль.
  2. Создайте символьную ссылку в каком-либо из общедоступных web-каталогов, откуда вы хотите иметь доступ к NCC. Направьте ее на подкаталог html в корневом каталоге установки NCC. Это свяжет вас с основной страницей NCC и вашими общедоступными Web-каталогами и защитит от доступа другие файлы NCC.
  3. Теперь вы готовы к запуску NCC. Убедитесь, что база данных и web-сервер работают, откройте web-навигатор и введите имя хоста для сервера NCC вместе с именем созданной на предыдущем шаге символьной ссылки. Например, если вы назвали символьную ссылку ncc и создали ее в корневом каталоге Web, а сервер NCC имеет имя ncc.example.com, то URL будет выглядеть следующим образом:

    http://ncc.example.com/ncc

    Если вы обращаетесь к NCC на локальной машине, то сработает

    http://localhost/ncc

    Отобразится входная страница NCC.

  4. Введите имя пользователя и пароль, заданные в процессе установки.

Теперь можно применять NCC для автоматизации и планирования сканирований.

Применение NCC

После входа отображается основной экран NCC (см. рис. 8.12). Здесь можно управлять всеми группами, организациями, целями сканирования и расписаниями.

Основной интерфейс NCC

Рис. 8.12. Основной интерфейс NCC

NCC построен как модульная и расширяемая программа. Например, можно применять NCC для управления несколькими сканированиями одной организации. Однако, если вы работаете консультантом, то можете определить сканирования для нескольких организаций с разными профилями. Давайте сделаем еще один шаг и предположим, что вы хотите стать поставщиком услуг приложений безопасности. NCC позволяет задать несколько групп (каждая со своими элементами-организациями) для всех ваших индивидуальных агентов и консультантов, продающих услуги анализа защищенности. (Со временем будут созданы настраиваемые интерфейсы для управления группами, но в бета-версии эти средства отсутствуют.)

Вы можете выбирать из четырех основных опций.

  • System admin. Эти опции доступны только системному администратору. Здесь можно создавать группы и выполнять другие функции системного уровня.
  • Group admin: Эти опции доступны только администраторам групп, которые могут добавлять, редактировать или удалять групповые профили организаций. Вы будете применять эти функции, например, при задании различных организаций с набором целей, каждой из которых можно управлять. Каждый администратор групп будет видеть только те организации, к которым он имеет доступ.
  • Company admin: Здесь вы управляете пользователями, целевыми файлами и расписаниями для каждой организации. Например, вы можете пожелать, чтобы администратор более низкого уровня выполнял сканирование для одного подразделения, но не для другого. Подобные параметры можно задавать здесь.
  • User functions: Этот раздел доступен всем пользователям. Здесь отдельные пользователи могут редактировать данные своего профиля и выполнять действия со своими счетами, такие как изменение пароля. Они могут также получить доступ к данным выполненного сканирования.

Возьмем простой пример и пройдемся по всем этапам добавления пользователей, добавления целей и составления расписания сканирований. Для простоты предположим, что вам не требуются средства поддержки нескольких организаций и нескольких групп.

Добавление пользователей

  1. Во-первых, необходимо добавить пользователя (отличного от системного администратора, который был добавлен ранее). В разделе Company Admin щелкните мышью на Add под строкой User Mgmt, чтобы добавить пользователя, который может запускать сканирования.
  2. Выберите организацию, которой он будет принадлежать, из выпадающего списка, и щелкните мышью на Add.
  3. На экране управления пользователями впишите информацию о новом пользователе (рис. 8.13).
    Экран управления пользователями NCC

    Рис. 8.13. Экран управления пользователями NCC

    Здесь можно выбрать имя пользователя и пароль. Пароль при вводе заменяется звездочками и сохраняется как хэш-значение MD5, а не как обычный текст. Выберите здесь также тип пользователя: System admin, Group admin, Company admin или User. Отметим, что вы можете создавать пользователей, которые находятся на том же или нижележащем уровне, что и вы. Например, администраторы организаций не могут создавать пользователей уровня системного администратора.

    Если вы хотите отредактировать или удалить существующего пользователя, щелкните мышью на Edit/delete на основном экране в разделе управления организациями (Company Management).

  4. Щелкните мышью на Add, и NCC добавит в базу данных пользователя, который может теперь входить в систему и добавлять сканирования как сотрудник организации, к которой он был приписан.

Добавление целей

В NCC цель определяется как произвольный набор IP-адресов и ассоциированных настроек сканирования для этих адресов. При проектировании программы мы приняли сознательное решение разделить объекты целей и объекты расписаний. Это делает программу более модульной и повышает ее гибкость. Например, вы можете запланировать определенное сканирование на начало каждого месяца. Однако, если возникает новая уязвимость, вы можете пожелать однократно просканировать данную цель в середине месяца, чтобы проверить выявленную уязвимость. NCC позволяет добавлять событие одноразового сканирования для данной цели, вместо того, чтобы изменять, а затем восстанавливать ежемесячное сканирование в прежнем виде.

  1. Чтобы добавить цель, щелкните мышью на Target Mgmt в разделе Company Admin основного экрана.
  2. Раскройте контекстное меню, чтобы увидеть все цели, к которым вы имеете доступ. Если вы являетесь администратором группы, то вам покажут все цели для каждой организации, которой вы принадлежите.
  3. Щелкните мышью на Add, появится экран управления целями (рис. 8.14). Здесь можно выбрать организацию, для которой добавляется цель.
    Управление целями в NCC

    Рис. 8.14. Управление целями в NCC

    Задайте для цели текстовое описание, например "серверы в демилитаризованной зоне". Это описание появится в раскрывающемся меню, поэтому оно должно быть достаточно содержательным.

  4. Выберите тип сканирования: будет ли сканироваться один адрес, подсеть или диапазон адресов.
  5. В поле Scan Value введите цепочку целевых IP-адресов в синтаксисе, который поддерживает Nessus. Напомним (см. "Сканеры уязвимостей" ) допустимые в Nessus форматы адресов:
Один IP-адрес 192.168.0.1
IP-адреса, разделенные запятыми 192.168.0.1,192.168.0.2
IP-диапазон - пара адресов, разделенных дефисом 192.168.0.1-192.168.0.254
Стандартная нотация с косой чертой 192.168.0.1/24 (сеть класса C из 256 адресов)
Имя хоста myhost.example.com
Произвольная комбинация вышеприведенных элементов, разделенных запятыми 192.168.0.1-192.168.0.254,195.168.0.1/24,192.168.0.1-192.168.0.254
  1. Выберите конфигурацию сканирования. По умолчанию используется сканирование Nessus. Имеется до четырех других типов сканирования. (В последующих версиях будет разрешена выгрузка файла индивидуальной конфигурации и вставка его в текстовый файл.)
  2. Щелкните мышью на Add, и цель будет добавлена. Теперь все готово для составления расписания сканирований.

Составление расписания сканирований

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

  1. В основном меню в разделе Company Admin щелкните мышью на Schedule Management. Появится экран управления расписанием (рис. 8.15).
    Экран управления расписанием в NCC

    Рис. 8.15. Экран управления расписанием в NCC
  2. Выберите организацию и цель в этой организации. Здесь также доступно раскрывающееся меню выбора, отражающее уровень пользователя, под именем которого вы вошли в систему.
  3. Выберите дату сканирования, время, частоту, число повторов.

    Можно выполнять сканирование один раз, ежедневно, еженедельно, ежемесячно, раз в два месяца, ежеквартально (в последующих версиях будут поддерживаться индивидуальные последовательности повторений в формате cron или I-cat). Можно также задать, чтобы повторение происходило только определенное количество раз, например, для заказчика, который подписал годовой контракт на ежемесячное сканирование. Допускается неограниченное число повторов, например, регулярное ежемесячное сканирование вашей собственной сети.

  4. Щелкните мышью на Add, и расписание для данного сканирования будет сформировано.

    Теперь можно спокойно сидеть и ждать отчетов. Пользователь, создавший сканирование, будет уведомляться по электронной почте за день до его выполнения (за исключением ежедневных сканирований, для которых уведомление происходит за час до начала). Еще одно электронное сообщение он получит, когда отчет будет готов для просмотра.

  5. Когда сканирование выполнено, можно просмотреть его результаты, выбирая View reports в разделе User Functions основного меню. Отобразится экран базы данных сканирований NCC (рис. 8.16).
    Представление базы данных сканирований в NCC

    Рис. 8.16. Представление базы данных сканирований в NCC

    Можно просматривать данные сканирований и генерировать индивидуализированные отчеты для заказчиков.

Заметим, что этот интерфейс похож на интерфейс NPI, который был рассмотрен выше в этой лекции. Это объясняется тем, что при создании данного раздела мы использовали фрагменты NPI. NPI имеет открытые исходные тексты с лицензией GPL, поэтому, если мы выпускаем программу с лицензией GPL и включаем информацию об авторских правах, то мы имеем право заимствовать эти тексты. При использовании открытых исходных текстов вы имеете полный доступ к любым их продвижениям и усовершенствованиям.

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

И так, у вас есть средства и знания для создания законченной системы обнаружения вторжений и сканирования уязвимостей с развитыми аналитическими возможностями. Применяя этот инструментарий, вы сможете существенно повысить безопасность вашей внутренней сети и внешних серверов. В совокупности эти средства позволяют наиболее эффективно использовать время, затрачиваемое на повышение безопасности сети. Теперь мы приступаем к рассмотрению средств шифрования, помогающих обеспечивать безопасность ваших данных внутри и вне вашей сети.

Роман Попов
Роман Попов

После прохождения курса Стандарты инфрмационной безопасности мне предложено получение Удостоверения о повышении квалификации от НИУ ВШЭ по программе Менеджмент информационной безопасности. Программа включает в себя ряд курсов которые я уже ранее проходил. Какой порядок действий в данном случае? Как прозводится перезачет результатов? И какие экщамены мне надо еще доздать чтобы получить удостоверение?

Александр Путятинский
Александр Путятинский

Добрый день по окончании данного курса выдается сертификат?

Гончик Цымжитов
Гончик Цымжитов
Россия, Санкт-Петербург
Александр Косенко
Александр Косенко
Украина, Днепропетровск