Инструменты безопасности с открытым исходным кодом

Платформы для 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

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


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

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


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

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

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


Содержание раздела