учебники, программирование, основы, введение в,

 

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

Рассматривавшиеся до сих пор средства предоставляют много полезной информации, которая может помочь в решении проблем сетевой безопасности. Но эти замечательные программы сами создают проблему - иногда они порождают слишком много информации. Одно-единственное сканирование большой сети с помощью Nessus способно породить отчет длиной в сотни страниц. Активный сенсор Snort может выдавать тысячи сигналов в день. Даже скромный межсетевой экран в состоянии посылать записи в журнал каждый час. Отслеживание всей этой защитной информации способно занять весь рабочий день. На самом деле, в крупных организациях нередко требуется небольшая группа сотрудников исключительно для отслеживания и анализа данных системы безопасности.
С многочисленными данными, которые порождают защитные средства, очень легко перейти от неинформированности, когда ситуация с безопасностью покрыта "мраком неизвестности" (что очень плохо), к перегруженности информацией (что, возможно, еще хуже). У системного администратора может возникнуть состояние "аналитического паралича" - ощущение беспомощности, когда просто не ясно, с чего начать. Перегруженные технические специалисты зачастую вообще отказываются от действий или откладывают проблемы безопасности на потом, когда появится время, чтобы с ними разобраться.
Чтобы избежать описанной ситуации, требуются средства, способные помочь организовать защитные данные и определить приоритеты действий. В этом отношении полезны многие коммерческие пакеты, такие как HP OpenView, BMC NetPatrol и NetIQ. К счастью для организаций с небольшим бюджетом, имеется несколько прекрасных пакетов с открытыми исходными текстами.
Хотя эти приложения с открытыми исходными текстами, строго говоря, не являются средствами безопасности, так как они активно не опрашивают и не защищают машины в сети, они во всех отношениях не менее важны, чем сетевые сканеры и системы обнаружения вторжений. Дело в том, что если вы "за деревьями не видите леса", то ваше положение ничем не лучше, чем раньше, когда защитных средств у вас не было.
Одним из примеров проблемы при анализе защитных данных служат журналы сообщений сервера. Большинство серверов, как UNIX, так и Windows, поддерживают журналы различной активности, происходящей в системе. Большая часть этой активности, такая как запуск служб, доступ пользователей и т.д., безвредна. Linux, например, поддерживает системные журналы в каталоге /var/log. Обычно имеется два общих журнала - syslog и messages - а также несколько других, более специальных. В этих текстовых файлах отражается все, что происходит в системе. На листинге 8.1 показано типичное содержимое файла messages из Linux.
Aug 17 04:02:06 earth syslogd 1.4.1: restart.
Aug 18 21:07:57 earth sshd(pam_unix) [17904]: session opened for user join by (uid=502)
Aug 18 21:12:39 earth su(pam_unix) [17960]: session opened for user root by john (uid=502)
Aug 18 21:12:52 earth su(pam_unix) [17960]: session closed for user root
Aug 18 21:13:44 earth sshd(pam_unix) [18008]: session opened for user join by (uid=502)
Aug 18 21:14:02 earth sshd(pam_unix) [18008]: session closed for user join
Aug 18 21:23:21 earth su(pam_unix) [18482]: session opened for user root by john (uid=502)
Aug 18 21:24:12 earth su(pam_unix) [18482]: session closed for user root
Aug 18 21:39:00 earth su(pam_unix) [10627]: session opened for user root by john (uid=502)
Aug 18 21:44:57 earth httpd: httpd shutdown succeeded
Aug 18 21:44:58 earth httpd: httpd: Could not detemine the server's fully qualified domain name,
using 127.0.0.1 for ServerName
Aug 18 21:45:00 earth httpd: httpd startup succeeded
Aug 19 23:39:02 earth sshd(pam_unix) [13219]: authentication failure:
logname= uid=0 euid=0 tty=NODEVssh ruser= rhost=tayhou-tnt-9-216-40-228-250.isp.net user=john
Aug 22 10:31:14 earth sshd(pam_unix) [16205]: session opened for user tony by (uid=500)
Aug 22 10:31:20 earth su(pam_unix) [16240]: session opened for user root by tony (uid=500)
Эти сообщения могут оказаться полезными при отладке системы или устранении неисправностей после установки новой программы. Можно видеть данные для каждой программы или процесса, запускаемых в системе. Видно, когда возникают какие-либо проблемы. Из приведенного примера можно понять, что процесс httpd, web-сервер, выключается. Следующая строка показывает, что имеется проблема с доменным именем, заданным для сервера. В данном случае по ошибке в качестве имени хоста был задан IP-адрес.
Файлы журналов содержат также информацию, представляющую интерес с точки зрения безопасности. Некоторые виды активности нередко служат предвестниками атаки. Неудачные попытки входа могут быть одним из таких признаков. На листинге 8.1 можно увидеть, что пользователю "john" было отказано во входе. Указано даже, откуда john пытался войти - с адреса, принадлежащего Isp.net. Если это была просто одиночная неудачная попытка, и вы знаете, что "john" использует Isp.net, то можно, наверно, не беспокоиться. Вполне возможно, что john просто неправильно ввел пароль. Однако, если вы видите несколько неудачных попыток входа, или эта единственная попытка предпринята с незнакомого адреса, то ситуацию следует проанализировать внимательнее. Другой сигнал неблагополучия - самопроизвольная перезагрузка сервера в необычное время. Это лишь немногие из протоколируемых событий, требующих вашего внимания.
В идеале вы должны ежедневно просматривать все файлы журналов. К сожалению, большинство из нас не имеют времени делать это даже раз в неделю; некоторые вообще не заглядывают в журналы. В этих файлах слишком много информации, чтобы можно было легко найти действительно важные данные. Было бы здорово иметь вспомогательную программу, которая ищет подобные вещи и информирует, когда они появляются, чтобы мы могли прореагировать своевременно, а не через несколько дней или недель. К счастью, имеется программа с открытыми исходными текстами, которая именно это и делает.

Swatch: Программа мониторинга журналов

Swatch
Автор/основной контакт: Todd Atkins
Web-сайт: swatch.sourceforge.net/
Платформы: Linux, большинство UNIX
Лицензия: GPL
Рассмотренная версия: 3.0.8
Списки почтовой рассылки:
Swatch-announce
В основном для обновления версий и новых выпусков. Не принимает сообщений.
Подписка по адресу list.sourceforge.net/list/listinfo/swatch-announce.
Swatch-users
Для общих справок, вопросов и информации о разработке.
Подписка по адресу list.sourceforge.net/list/listinfo/swatch-users.

Разные люди расшифровывают название Swatch по-разному - как Simple watcher (простой наблюдатель) или как Syslog watcher (наблюдатель syslog). В любом случае, Swatch - полезная программа, которая берет на себя наблюдение за системными журналами и поднимает тревогу только при появлении в них специфицированных вами записей. Swatch - это Perl-программа, регулярно просматривающая файлы основных журналов и отыскивающая определенные ключевые слова, которые вы можете задавать. Она способна выполняться в фоновом режиме как демон или как задание cron. Можно сконфигурировать Swatch для сигнализации о любых событиях в файлах журналов messages и syslog, указывающих на проблемы безопасности. Однако Swatch можно также применять для извещения почти о любом виде активности: о запуске определенной программы, о входе определенного пользователя в систему или о других событиях, отражаемых в файле журнала. Swatch можно также сконфигурировать для наблюдения за журналами определенных приложений вместо подразумеваемых общих файлов журналов.
Возвращаясь к применению Swatch в целях безопасности, отметим, что некоторые протоколируемые события имеют к безопасности непосредственное отношение. По умолчанию Swatch отслеживает следующие события:

  • Неудачные попытки входа. Критерии: В файле messages появляются слова Invalid, Repeated или Incomplete.
  • Крах системы. Критерии: В файлах журналов появляются слова panic или halt.
  • Перезагрузка системы. Критерии: Заголовок вашей ОС должен появляться в файлах журналов только при перезагрузке.

Вот некоторые другие связанные с безопасностью события, которые по вашему желанию может искать Swatch:

  • Сообщения Snort или Nessus. Если вы записываете данные Snort в файл syslog, то можно указать, чтобы Swatch искал вхождения слова snort. Оно будет появляться каждый раз, когда генерируется сигнал Snort.
  • Применение текстового редактора. Это может указывать на то, что кто-то в вашей системе пытается внести изменения в конфигурационные файлы. Конечно, если в системе часто используется текстовый редактор, будет порождаться слишком много ложных срабатываний.
  • Применение FTP, SSH или Telnet. Если кто-то загружает или выгружает файлы на вашей системе, это может означать проблему. Аналогично, если кто-то удаленно входит в систему за этим необходимо проследить. Однако, если вы сами часто так поступаете, то будет больше шума, чем пользы.

Примечание: По умолчанию программа Swatch сконфигурирована для поиска элементов, специфичных для операционной системы Sun. Лишь некоторые из них могут быть общими для Linux и других операционных систем на основе UNIX. Например, при поиске перезагрузки в системе Mandrake Linux вам придется заменить аргументы поиска Sun OS Release на Linux Mandrake Release. Если вы используете другую ОС, укажите элементы из сообщения о перезагрузке вашей ОС. Чтобы узнать текст сообщения, выполните перезагрузку, а затем найдите в файле messages соответствующее специфическое словосочетание.

Установка Swatch

  1. Для Swatch требуется Perl 5 или выше. Если вы используете новую установку Linux или BSD (не старше года), то у вас должна быть подходящая версия.
  2. Для Swatch требуются также некоторые дополнительные подпрограммы для языка Perl: Date::Calc, Date::HiRes и Date::Format. Если у вас эти модули отсутствуют, процесс конфигурирования выдаст соответствующие сообщения. Чтобы получить модули, зайдите на web-сайт http://www.prmfind.net и посмотрите, нет ли там доступного RPM для вашего дистрибутива.

Если вы используете дистрибутив Linux, то высока вероятность, что RPM для установки этих модулей присутствует на дисках дистрибутива. Если у вас нет RPM для модулей Perl, то для загрузки требуемых модулей можно воспользоваться системой Comprehensive Perl Archive Network (CPAN). (Система CPAN позволяет автоматически и без особых проблем загружать требуемые библиотеки Perl.) Чтобы сделать это, наберите следующую команду:
cpan -i имя_модуля
где имя_модуля заменяется на Date::Calc или тот модуль, который вы пытаетесь загрузить. Проверьте, что имя модуля задано правильно с учетом регистра символов и наберите оба двоеточия. Вам придется сделать это три раза - по одному для каждого требуемого модуля. Система CPAN позаботится о соединении с центральными серверами CPAN, загрузке модуля и его установке.

  1. Загрузите tar-файл с прилагаемого к книге компакт-диска или с web-сайта Sourceforge и распакуйте его.
  2. Так как Swatch является программой Perl, то процесс установки несколько иной по сравнению с предыдущими программами на языке Си. Последовательность вводимых команд будет следующей:
  • perl Makefile.PL
  • make
  • make test
  • make install

make realclean
Когда эти процессы завершатся, Swatch будет установлен и готов к последующим действиям.
Конфигурирование и запуск Swatch
Swatch - утилита командной строки, и запускается командой swatch с различными параметрами, описанными в табл. 8.1.
Например, команда
./swatch --config-file /home/john/my-swatch-config --daemon
запустит Swatch с конфигурационным файлом /home/john/my-swatch-config вместо подразумеваемого. Программа будет выполняться как фоновый процесс или демон. Эти опции могут задаваться по отдельности или вместе.


Таблица 8.1. Опции команды Swatch

Опция

Описание

--config-file имя_конфигурационного_файла

Swatch запускается с указанным конфигурационным файлом. По умолчанию используется ./swatchrc.

--restart-time время

Swatch перезапускается в указанное время. Можно использовать знак +, чтобы программа перезапустилась по истечении заданного времени с текущего момента. Это полезно, чтобы освежить имеющийся образ файла журнала.

input-record-separator регулярное_выражение

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

daemon

Swatch запускается как системный демон. Эквивалентно запуску Swatch с ключом & (амперсанд)

Таблица 8.2. Опции Swatch для файлов журналов

Опция

Описание

--examine файл

Предписывает Swatch выполнить полный просмотр указанного файла. Применяется, когда проверяемый файл каждый раз создается заново

--read-pipe программа

Вместо чтения файла можно заставить Swatch осуществлять ввод непосредственно из канала от указанной программы

--tail файл

Читать только вновь добавленные в файл строки. Это подразумеваемый режим Swatch на файлах журналов, так как новые записи обычно добавляются в конец существующего файла. Это значительно быстрее, чем каждый раз читать весь файл, особенно для журналов, которые могут достигать больших размеров, как, например, журнал Web-сервера

В табл. 8.2 описаны некоторые дополнительные опции, которые можно применять для управления чтением файлов журналов. В каждый момент времени допускается использование только одной из них. Например, команда
./swatch - examine messages - daemon
заставит Swatch при каждом запуске выполнять поиск во всем файле messages, а не только во вновь добавленных строках
Swatch обычно просматривает UNIX-файл messages, а при отсутствии такового по умолчанию читается syslog. При помощи ключей из табл. 8.2 можно заставить Swatch просматривать любые файлы журналов, например, журналы безопасности или даже файлы журналов определенных приложений, такие как nessus.messages
Конфигурационный файл Swatch
В конфигурационном файле Swatch располагаются все важные настройки. В этом файле, именуемом по умолчанию swatchrc, вы указываете программе, что искать в журналах и что делать в случае успешного поиска. Два примера файлов swatchrc поставляются вместе с программой в каталоге examples. Файл swatchrc.personal предназначен для применения на персональных рабочих станциях, а swatchrc.monitor - для мониторинга сервера. На листинге 8.2 показано, как выглядит версия monitor
#
# Конфигурационный файл Swatch для постоянного мониторинга
#
# Неудачные попытки входа
watchfor /INVALID|REPEATED|INCOMPLETE/
echo
bell 3
exec "/usr/local/sbin/badloginfinger $0"

# Температура в машинном зале
watchfor /WizMON/
echo inverse
bell

# Аварии и остановки машины
watchfor /(panic|halt)/
echo
bell
mail
exec "call_pager 3667615 0911"

# Перезагрузки системы
watchfor /SunOS Release/
echo
bell
mail
exec "call_pager 3667615 0411"
Как можно видеть из листинга 8.2, базовый формат включает инструкцию watchfor, за которой следует текстовая инструкция между двумя косыми чертами, а затем одна или несколько команд действия. Текст между косыми чертами служит аргументом поиска, когда Swatch просматривает файл журнала (или его последние записи). В случае успешного поиска Swatch выполняет указанные далее действия. В табл. 8.3 описаны поддерживаемые Swatch инструкции действий.


Таблица 8.3. Инструкции действий Swatch

Инструкция действия

Описание

echo режим

Выдает искомый текст на экран. Режим указывать не обязательно; он задает цвет выводимого текста. По умолчанию используется обычный экранный цвет текста, но можно также задавать режимы blink (мигание), bold (жирный), underline (подчеркнутый), inverse (инверсный) и цвета green, blue, red, yellow, black, magenta, cyan, white или любой из перечисленных вариантов, за которым следует суффикс _h для подсвеченной цветной версии, например black_h

bell число

Звуковой сигнал через внутренний динамик ПК указанное число раз. По умолчанию выдается один сигнал.

exec команда

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

pipe команда

Передает команду в другой процесс.

mail addresses=адрес1:адрес2:адрес3,subject=текст

Посылает электронное сообщение, используя программу Sendmail по одному или нескольким адресам, разделенным двоеточием, с заданным текстом темы. Текст сигнала тревоги помещается в тело письма

write пользователь1:пользователь2

Посылает сигнал посредством UNIX-команды write одному или нескольким пользователям.

throttle часы:минуты:секунды

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

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

Использование баз данных и web-серверов для управления защитными данными

Раз уж вы вышли за рамки простой проверки журналов серверов, вы захотите также иметь возможность анализировать выдачу программ безопасности, рассмотренных ранее. Лучший способ сделать это - импортировать результаты в базу данных. Средства, описанные в оставшейся части данной лекции, предназначены для импорта и просмотра защитных данных в БД. Для применения этих средств требуются программа базы данных и web-сервер для просмотра результатов. Хотя имеются и другие возможности, мы рекомендуем использовать базу данных MySQL и Web-сервер Apache с поддержкой PHP. Необходимо настроить эти программы, прежде чем устанавливать любое из описываемых средств. Далее кратко описана установка и конфигурирование упомянутых базовых серверов

Настройка сервера MySQL

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

  1. Загрузите самую свежую версию MySQL с сайта http://www.mysql.com или используйте RPM с дистрибутивных дисков вашей ОС. Проверьте, что версия MySQL не ниже 4.0.

Примечание: Если у вас уже имеется установленная база данных MySQL версии 4.0 или выше, перейдите к шагу 4.

  1. Распакуйте файл и выполните обычные команды компиляции в созданном каталоге:
./configure
make
make install
  1. Выполните командный файл установки, расположенный в каталоге scripts, набрав
mysql_install_db

Программа базы данных будет инициализирована и подготовлена к работе.

  1. Создайте пользователя и группу mysql для базы данных, от имени которых будут выполняться задачи. Для этого следует набрать команды
groupadd mysql
useradd -g mysql mysql
  1. Чтобы MySQL могла функционировать, задайте владельца и режим доступа файла с помощью следующих команд:
chown -R root /usr/local/mysql
chown -R mysql /usr/local/mysql.var
chgrp -R mysql /usr/local/mysql
cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
  1. Откройте в редакторе файл /etc/ld.so.conf и добавьте в него следующие строки:
/usr/local/mysql/lib/mysql
/usr/local/lib

Сохраните файл.

  1. От имени пользователя root введите
ldconfig -v
  1. От имени пользователя root задайте пользователя admin для базы данных MySQL, набрав
/usr/local/mysql/bin/mysqladmin -u root password 123456

где 123456 надо заменить выбранным вами паролем. Не забудьте записать пароль и сохранить его в безопасном месте.
Когда вы это сделаете, вернитесь под свое обычное входное имя, набрав "exit" в командной строке.

  1. Можно настроить MySQL для запуска в качестве демона, чтобы БД выполнялась все время, и не надо было запускать ее вручную. Для этого достаточно поместить следующую строку в конце файла rc.local, находящегося в /etc/rc.d/.
mysqld -user=mysql &

Эта команда будет запускать MySQL как системный процесс при каждой перезагрузке системы.

  1. Наконец, необходимо повысить защищенность MySQL, чтобы БД не стала дырой в безопасности вашей системы. По умолчанию защищенность MySQL весьма слаба. Хотя безопасность MySQL не является темой данной книги, ниже представлено несколько советов, которыми можно воспользоваться.
    • Удалите стандартных пользователей, если только у вас нет программ, которые их используют.
    • Проверьте, что пользователь root может подключаться только с небольшого числа хостов.
    • Задайте несколько правил на межсетевом экране, разрешающих соединение с сервером MySQL только ограниченному числу портов с ограниченного числа машин.
    • Создайте системные счета для запуска программ. Системный счет root или счет MySQL root (это две разные вещи) используйте только в случае крайней необходимости (к сожалению, NPI этого требует). Данная лекция включает примеры специальных счетов приложений для создания в каждом пакете описания везде, где это возможно.

Теперь сервер MySQL готов к работе. Наберите mysql в командной строке ОС. Появится приглашение для ввода имени пользователя и пароля, чтобы войти в стандартную командную строку MySQL, где можно применять стандартные команды SQL к базам данных MySQL. См. врезку о некоторых основных командах MySQL.


Основные команды MySQL
Чтобы войти в MySQL, наберите mysql -u имя_пользователя -p пароль, заменяя имя_пользователя и пароль соответствующими именем и паролем одного из счетов базы данных MySQL.
Примечание: Это не то же самое, что вход в систему. В данном случае вы входите в MySQL и получаете приглашение mysql>, после которого можно набирать команды. Не забывайте ставить в конце команды точку с запятой, прежде чем нажать клавишу ввода для ее выполнения.
Ниже представлено несколько основных команд для навигации и поиска в базе данных MySQL.

show databases;

Отображает все доступные на сервере MySQL базы данных.

use имя_базы_данных;

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

show tables;

Перечисляет все таблицы, существующие в базе данных.

select запрос from имя_таблицы;

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

Настройка web-сервера Apache
Развитые средства анализа из данной лекции основаны на применении web-сервера в качестве как интерфейса конфигурирования, так и механизма вывода. Конечно, этот краткий раздел не претендует на исчерпывающее описание web-сервера; здесь рассмотрены только настройка и другие действия, требуемые для использования средств безопасности. Если вы намерены применять этот сервер для чего-то еще, помимо ACID и NCC, или в крупномасштабных средах, вам необходимо более глубоко ознакомиться с администрированием web-сервера. При использовании web-сервера следует учитывать вопросы безопасности - необходимо позаботиться о том, чтобы серверы были укреплены, выполняли минимум сервисов и по возможности быстро латались. Если вы желаете применять IIS или другой web-сервер, то он должен поддерживать PHP версии 4.0 или выше.

  1. Загрузите самую свежую версию сервера Apache с сайта http://www.apache.org. Если он есть на дистрибутивных дисках ОС или уже установлен в системе, проверьте, что его версия не ниже 1.3.

Примечание: Если сервер Apache версии 1.3 или более поздней уже установлен, перейдите к шагу 3.

  1. Распакуйте программу и выполните следующие команды:
./configure -prefix=/www -enable-so -activate-module=src/modules/php4/libphp4.a
make

make install
Эти команды задают подразумеваемый каталог /www и активизируют нужные модули.

  1. Запустите web-сервер, набрав в командной строке apachectl start. Эта команда запускает демон http и настраивает его для выполнения в качестве системного процесса.

Можно остановить Apache в любой момент, выполнив ту же команду с аргументом stop.
В других вариантах Linux и UNIX запуск и остановка могут осуществляться по-другому. Уточните в документации, как это делается.

  1. Проверьте установку web-сервера, открывая web-навигатор и вводя IP-адрес сервера или задавая localhost, если вы работаете прямо на серверной машине. Если будет выведена web-страница Apache, то web-сервер успешно установлен. Корневым каталогом web-сервера, в который помещают документы для публичного просмотра, в системе Mandrake Linux служит /usr/local/apache2/htdocs/; различные дистрибутивы могут немного различаться.
  2. Затем задайте автоматический запуск Apache при перезагрузке системы (вряд ли вы захотите перезапускать web-сервер вручную). Для этого перейдите в каталог, где находятся все стартовые командные файлы; в Mandrake Linux это /etc/rc.d. Каждый файл rc. представляет свой уровень выполнения. Добавьте следующие строки в файлы rc4.d и rc5.d:
../init.d/httpd S85httpd

../init.d/httpd K85httpd
Можно протестировать внесенные изменения, перезагрузив систему и проверив, что в выдаче команды ps -ax присутствует процесс httpd.

  1. Необходимо повысить защищенность Apache, чтобы предотвратить его ненадлежащее использование. web-серверы - одна из наиболее распространенных целей атакующих, поэтому если вы собираетесь разрешить доступ к этой машине извне вашей сети, требуется обеспечить ее безопасность. Ниже представлены некоторые основные рекомендации по обеспечению хорошей безопасности web-сервера:
    • Выполните сканирование уязвимостей Web-сервера сразу после завершения установки и конфигурирования, чтобы убедиться, что все корректирующие заплаты наложены и отсутствуют какие-либо очевидные дыры в безопасности.
    • Защитите все непубличные Web-каталоги с помощью какого-либо метода контроля доступа. Самым быстрым и легким способом является применение файлов .htaccess.
    • Шифруйте коммуникации между клиентами и сервером с помощью SSL всякий раз, когда имеете дело с информацией ограниченного доступа (данные о безопасности явно попадают в эту категорию). Если вы обращаетесь к серверу извне своей локальной сети, то есть через Интернет, справьтесь в документации web-сервера или в Интернете о необходимых настройках.

Вышеизложенное не является исчерпывающим рассмотрением проблем безопасности web-серверов, но все это необходимо выполнить, прежде чем делать сервер общедоступным.
Настройка PHP
PHP является интерпретируемым языком, предназначенным для использования в web-страницах. Он не требует компиляции, поэтому можно просто поместить PHP-процедуру в каталог, который распознает PHP, и она будет выполняться при обращении. Это упрощает написание программ, встроенных в web-страницы. Большинство современных web-серверов распознают PHP, однако для этого может потребоваться дополнительная настройка при установке.
В силу перечисленных достоинств PHP стал предпочтительным языком реализации многих приложений на web-платформе. Он потребуется нам для трех оставшихся средств этой лекции (ACID, NPI и NCC). Установка PHP должна быть предусмотрена в директиве configure в описанной выше процедуре установки Apache. Чтобы проверить, что PHP установлен в вашей системе, и узнать, какова его версия, наберите в командной строке php -v. Если он присутствует, то должна появиться некоторая выдача с номером версии. Однако если вы не смогли установить его как часть Apache или хотите установить самую свежую версию, примените представленную ниже процедуру.

  1. Загрузите самую свежую версию PHP с сайта http://www.php.net или используйте RPM с установочных дисков операционной системы. В последнем случае проверьте, что у вас версия 4.0 или выше.
  2. Распакуйте дистрибутив.
  3. В каталоге установки выполните следующие команды компиляции:
./configure -prefix=/www/php -mysql=/usr/local/mysql \ -with-apxs2=/www/bin/apxs 
-with-zlib-dir=/usr/local (all on one line)
-with-gd
make

make install
Инструкция configure включает несколько модулей, нужных средствам данной лекции.

  1. Отредактируйте конфигурационный файл web-сервера httpd.conf, как правило, находящийся в /www. Добавьте следующие строки, а затем сохраните файл:
LoadModule php4_module modules/libphp4.so

AddType application/x-httpd-php.php

  1. Чтобы проверить, что PHP работает правильно, воспользуйтесь текстовым редактором для создания небольшой процедуры в файле с именем test.php. Наберите в файле следующий текст, а затем сохраните его:

<?php phpinfo(); ?>
При выполнении этой PHP-процедуры будет выдана некоторая базовая системная информация.

  1. Скопируйте тестовый файл в каталог /www/htdocs. Введите URL или IP-адрес машины, а затем наберите /test.php. Вы должны увидеть на web-странице номер версии PHP. Если все получилось, то web-сервер с поддержкой PHP готов к работе.

Программа ACID (Analysis Console for Intrusion Databases - консоль анализа для баз данных вторжений) предназначена для более эффективного использования данных, генерируемых средствами обнаружения вторжений. Ее написал Роман Данылив с коллегами в рамках проекта AirCERT, выполняемого университетом Карнеги-Меллон. Это часть более крупной деятельности CERT (Computer Emergency Response Team - Группа реагирования на нарушения информационной безопасности). CERT в течение многих лет успешно применяет эту программу для защиты Интернета и организаций. CERT отслеживает компьютерные преступления и направляет извещения в списки почтовой рассылки, когда происходит крупный инцидент. Список почтовой рассылки CERT является разновидностью системы раннего предупреждения обо всех больших кризисах или атаках, происходящих в Интернете. Как таковой он может быть весьма полезен системным администраторам. Вы можете посетить сайт CERT http://www.cert.org и подписаться на почтовую рассылку.
В рамках проекта AirCERT сенсоры систем обнаружения вторжений были размещены в различных организациях с целью изучить общие тенденции вторжений. Чтобы облегчить анализ, была написана программа ACID. Поскольку исходные тексты этого проекта были сделаны открытыми, вы можете использовать их в собственных целях, не принимая участия в проекте AirCERT.
Положенная в основу ACID идея состоит в переносе всех данных об обнаруженных вторжениях в базу данных, где их можно отсортировать и организовать по приоритетам. ACID предоставляет панель управления на основе Web для сортировки, просмотра и манипулирования этими результатами.
ACID может использовать почти любую базу данных SQL и любой web-сервер и поддерживает множество сенсоров для ввода данных. Допускаются также необработанные сигналы Snort и файлы журналов в формате syslog. В настоящее время ACID работает напрямую только с одной системой обнаружения вторжений - Snort, но с помощью утилиты Logsnorter, которая доступна на web-сайте ACID, можно импортировать журналы в базу данных ACID из любого устройства, выводящего данные в формате syslog.
Для своей работы ACID требует наличия некоторых программ. Кроме базы данных, web-сервера и PHP, которые уже были рассмотрены в этой лекции, нужны также следующие библиотеки и подпрограммы.
ADOdb
Этот пакет обеспечивает уровень абстракции базы данных, позволяющий PHP использовать стандартный интерфейс для множества баз данных, включая MySQL. Возьмите его по адресу http://php.weblogs.com/adodb, распакуйте в /www/htdocs или подходящем корневом каталоге Web, и он должен быть готов к работе. Никакой дополнительной установки не требуется.
PHPLOT
Этот пакет позволяет создавать графики с помощью ACID. Если вы хотите использовать эту возможность, возьмите модуль с http://www.phplot.com. Распакуйте его в каталоге /www/htdocs и, так же как ADOdb, он должен быть готов к употреблению.
JpGraph
Эта программа позволяет PHP генерировать цветные графики. Она понадобится наряду с PHPLOT, если вы захотите представлять данные Snort в графическом виде. Возьмите ее по адресу http://www.aditus.nu/jpgraph/ и распакуйте в корневом каталоге Web (например, /www/htdocs). Она создаст собственный подкаталог и будет доступна, когда понадобится для ACID.
GD
Этот пакет содержит библиотеки манипуляции изображениями для PHP, которые нужны также для создания графиков. Если вы установили PHP согласно данным ранее в этой лекции инструкциям, то у вас уже должна иметься эта утилита. В противном случае возьмите ее по адресу http://www.boutell.com/gd/ и установите в каталоге /www/php. Если вы не компилировали PHP с помощью представленных выше команд, то следует также убедиться, что имеются следующие библиотеки, необходимые для GD.

  • libpng. Предоставляет для GD поддержку формата PNG. Ее можно взять на http://www.libpng.org/pub/png/ или с дистрибутивных дисков вашей ОС.
  • libjpeg-6b. Это библиотека jpeg для PHP. Можно взять ее на http://www.ijg.org/ или с дистрибутивных дисков вашей ОС.
  • zlib. Эта библиотека предоставляет для GD поддержку сжатия. Можно взять ее на http://www.ijg.org/ или с дистрибутивных дисков вашей ОС.

Конфигурирование Snort для MySQL

  1. ACID предполагает, что имеется один или несколько активных сенсоров Snort, поставляющих данные. Если вы еще не создали сенсоры Snort, вернитесь к лекции 7. Сенсоры Snort необходимо сконфигурировать таким образом, чтобы они записывали данные в MySQL. Для этого выполните следующие действия при установке Snort:
    • При первоначальной компиляции Snort используйте следующую инструкцию configure:

./configure - with-mysql=/usr/local/mysql
Проверьте, что указан каталог, где находится MySQL.

    • Отредактируйте файл конфигурации snort.conf. Найдите закомментированную строку, которая начинается с #output database. Отредактируйте ее следующим образом:

output database: log,mysql,user=snort password=123456 dbname=snort host=localhost
Замените пользователя snort и пароль 123456 на правильные имя пользователя базы данных и его пароль, которые будут применяться для ACID. ACID создаст базу данных с именем "snort", хотя можно изменить это имя, редактируя файл конфигурации ACID. Если вы подключаетесь к локальной базе данных, то оставьте у переменной host значение localhost. Если вы подключаетесь к базе данных на другой машине, задайте здесь IP-адрес или имя хоста.

  1. Не забудьте удалить символ комментария # в начале строки и затем сохраните файл.

В данной лекции предполагается, что ACID и сенсор Snort устанавливаются на разных машинах. Размещение их на одной машине неудачно не только с точки зрения безопасности; работа сенсора Snort замедлится до такой степени, что от окажется бесполезным. Компьютер с ACID предпочтительно расположить в сегменте сети, отличном от сегмента с сенсорами Snort - это затруднит взломщику доступ к журналам.

Установка ACID

После загрузки всех необходимых программ можно, наконец, установить ACID.

  1. Возьмите файл программы с компакт-диска книги или с web-сайта ACID.
  2. Поместите tar-файл в каталог /www/htdocs. Распакуйте его там, и он создаст собственный каталог.
  3. Удалите tar-файл, поскольку все, оставленное в корневом каталоге /htdocs, может быть доступно пользователям web-сервера.

Конфигуриривание ACID

  1. Перейдите в каталог /htdocs/www/acid.
  2. Отредактируйте файл acid_conf.php. Строки, начинающиеся с косой черты и звездочки, служат комментариями и инструкциями по конфигурированию. Строки, начинающиеся с $, являются переменными и сообщают программе специфическую информацию о системе.
  3. В инструкциях $ задайте параметры своей системы. В табл. 8.4 перечислены переменные, а также рекомендации для каждого элемента.

Таблица 8.4. Переменные для конфигурирования ACID

Имя переменной

Описание

$DBtype

Тип базы данных, которую будет использовать ACID. По умолчанию - mysql, но можно также указать postgresql или mssql, если вы хотите применить какую-либо из этих двух баз данных

$alert_dbname

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

$alert_host

Хост, на котором будет храниться база данных сигналов. Может задаваться как IP-адрес или имя хоста. Если ACID и база данных располагаются на одной машине, то следует указать localhost. Для повышения безопасности и производительности целесообразно выделить для базы данных машину, отличную от Web-сервера PHP

$alert_port

Порт, по которому происходит обращение к базе данных. Если вы размещаете ее локально, то задайте данное значение просто как " "

$alert_user

Имя пользователя базы данных, которое будет применять ACID при протоколировании данных. Проверьте, что оно совпадает с именем пользователя MySQL, созданным при настройке базы данных

$alert_password

Пароль пользователя базы данных. И здесь проверьте, что он совпадает с паролем MySQL для данного пользователя

$archive_dbname

Имя базы данных, которую Snort использует для архивирования. Подразумеваемое имя snort_archive вполне разумно, если только вы не храните несколько баз данных на одной машине и не хотите задать более содержательные имена

$archive_host

Хост, на котором будет располагаться база данных архива. Если она находится на той же машине, то значение должно задаваться как localhost

$archive_port

Порт для записи на сервере базы данных. Используйте " ", если запись происходит локально

$archive_user

Пользователь базы данных, от имени которого производится запись архивных данных. Обычно это значение совпадает с $alert_user (см. выше), хотя можно создать отдельного пользователя для записи архивов

$archive_password

Пароль для пользователя базы данных, от имени которого записываются архивные данные. Обычно совпадает с $alert_password

$chartlib_path

Маршрут к модулям создания графиков - /www/htdocs/jpgraph-1.11/src

$chart_file_format

Формат файлов графиков. По умолчанию - png. Другими допустимыми форматами служат jpg и gif

  1. После сохранения файла с этими параметрами откройте Web-навигатор и введите /acid/acid_main.php после имени хоста или IP-адреса Web-сервера.

Будет выведена страница с конфигурацией ACID. С этого момента можно применять Web-интерфейс для завершения конфигурирования ACID.

  1. Щелкните мышью на кнопке Create ACID AG. Это приведет к созданию базы для данных Snort. Подразумеваемое имя этой БД - "snort".
  2. Перейдите на, и вы увидите основную страницу ACID для своей базы данных Snort На этом конфигурирование ACID завершается и можно приступать к использованию этой программы для управления системами обнаружения вторжений.

Основы применения ACID

При первом входе в ACID отображается основная страница. Верхняя часть основного представления базы данных показывает общую статистику просматриваемой БД, включая ее имя, временные рамки всех содержащихся в ней записей, дату и время последнего запроса.
Раздел, расположенный ниже, содержит всю сводную информацию по конкретной группе сигналов тревоги (AG - alert group). AG - это сенсор или группа сенсоров, представленных в этой базе данных. Если вы желаете отслеживать различные группы сенсоров как единое целое (например, сенсоры для различных заказчиков или подразделений), то необходимо создать отдельную базу данных или AG для каждой группы. Это важно для создания отчетов и применения архивных средств ACID. Вы сможете выполнять поиск или запросы только на отдельных AG, а не на множестве AG, поэтому необходимо организовать сенсоры различных AG подходящим образом. Для большинства организаций будет достаточно иметь одну группу сигналов тревоги для всех сенсоров. Но если вы работаете в консультационной компании или имеете дело с большим объемом операций по нескольким подразделениям, то, вероятно, удобнее распределить группы сенсоров по различным AG, чтобы можно было следить за ними по отдельности.
В прямоугольнике слева на экране можно видеть статистику для данной AG: общее число сигналов, число уникальных сигналов и число различных IP-адресов (как исходных, так и целевых), фигурирующих в базе данных. Если у вас несколько сенсоров в сети ACID, то можно щелкнуть мышью на пункте Sensors, чтобы увидеть их список. Можно ограничить поиск данными только одного сенсора. На основной странице представлены также графические профили трафика сигналов для каждого протокола и порта, чтобы можно было понять, каков вид трафика, проходящего через сенсор сетевой системы обнаружения вторжений.

Применение ACID для управления сетевыми системами обнаружения вторжений и их настройки

Прежде чем ваша сетевая система обнаружения вторжений станет сколько-нибудь полезной, ее необходимо настроить под вашу сеть, чтобы исключить ложные срабатывания. Для подобной деятельности ACID бесценна. При первом включении сетевой системы обнаружения вторжений все сигнатуры сигналов активны и ваша база данных начнет заполняться сигналами. Первоначально эти сигналы по большей части будут ложной тревогой. Для приведения сигнализации в соответствие с вашей сетью, следует удалить некоторые сигнатуры, чтобы избавиться от большей части ложных срабатываний и получать от нее только те данные, которые заслуживают внимания.
Когда вы накопите в базе данных достаточное количество сигналов (по крайней мере тысячу для загруженной сети), можно начать анализировать тревожные данные и исключать некоторые типы сигналов. Внимательно наблюдайте за своей базой данных, так как для ее заполнения может потребоваться не так много времени, особенно для подразумеваемого списка правил Snort.
Откройте ACID и щелкните мышью на кнопке Unique Alerts. Будут показаны самые свежие из полученных сигналов, сгруппированные по типу.
На этой странице представлена следующая информация для каждого типа сигналов:

  • Имя сигнатуры.
  • Классификация сигнала.
  • Общее число сигналов этого типа в базе данных.
  • Номер сенсора, с которого пришел сигнал.
  • Число различных исходных IP-адресов, ассоциированных с этим сигналом.
  • Число различных целевых IP-адресов, ассоциированных с этим сигналом.
  • Время прихода сигнала.

Можно выполнить сортировку по любому из столбцов, щелкая мышью на маленькой стрелке вверху столбца. Например, имеет смысл отсортировать список по числу сигналов и щелкнуть мышью на строке, соответствующей максимальному числу срабатываний. Это сузит список до одного типа сигналов. Просмотрите список и попытайтесь определить, действительно ли это проблема безопасности или ложное срабатывание. Наличествуют ли какие-нибудь отличительные особенности? Замешан ли во всех сигналах этого типа один IP-адрес, исходный или целевой? Генерируются ли сигналы с регулярными интервалами или кажутся случайными? Если этот анализ не ведет к каким-либо выводам, то копайте глубже, щелкая мышью на отдельных сигналах. Это позволит увидеть реальный пакет, который вызвал сигнал, что весьма полезно с юридической точки зрения, если вы действительно были атакованы и пытаетесь в дальнейшем отреагировать или преследовать атакующих.
Будьте осторожны. Если по сети передаются секретные данные, то вы можете нечаянно их увидеть, так как перехватываете и анализируете целые пакеты данных. Убедитесь, что вам разрешено видеть эти данные. Также очень важно, чтобы база данных Snort была защищена должным образом, так как любой, кто проникнет в машину базы данных, потенциально будет иметь доступ к этой секретной информации. Другое решение этой проблемы - понижение уровня детализации данных, фигурирующих в правилах сигнала, хотя это может помешать прослеживанию виновника на основе зарегистрированных сигналов тревоги.
В примере на Web-IIS cmd.exe является самым распространенным сигналом. Щелкнув мышью на данных сигнала, можно увидеть реальный пакет, который порождает этот сигнал. Показан исходный IP-адрес вместе со всеми портами TCP и настройками.
По имени хоста можно сказать, что пакет пришел с адреса в Японии (домен верхнего уровня .jp) и определить, можно ли считать обращение к вашей сети с этого адреса нормальным. Можно копнуть глубже и увидеть реальную полезную нагрузку пакета. Слева находятся данные пакета в шестнадцатеричном виде, справа - в текстовом (если их можно представить таким образом). Это показывает реальные команды, которые отправитель пытается выполнить на вашей машине. Глядя на эти данные можно предположить, что кто-то пытается получить доступ к команде cmd.exe, иными словами, получить приглашение командной строки. Очевидно, это атака на вашу систему. К сожалению, это, скорее всего, запрограммированная атака, проводимая Интернет-"червем", а атаки такого типа случаются каждый день десятками, как можно понять по большому числу сигналов cmd.exe в базе данных. Тем не менее, стоит за этим понаблюдать и проверить, не появляется ли этот IP-адрес постоянно. Можно, по крайней мере, написать жалобу поставщику Интернет-услуг и убедиться, что атакованная машина (определяемая по целевому адресу) защищена от подобных вещей. Можно также принять дополнительные меры против IP-адреса, указанного как исходящий, например, начать юридическое преследование или вчинить гражданский иск, если произошло реальное проникновение. По крайней мере, теперь вы точно знаете, какого вида атаки приходят в вашу сеть и что они пытаются делать. Это позволит лучше защитить сеть и реагировать, если она окажется под атакой.

Другие способы проанализировать данные сигналов тревоги с помощью ACID

Кого атакуют?
С помощью ACID найдите наиболее распространенные целевые IP-адреса, то есть IP-адреса, которые, вероятно, атакуются чаще всего и на которых необходимо сконцентрировать усилия по защите. Это поможет также отличить ложные срабатывания от реальных, поскольку вы, возможно, обнаружите, что некая машина создает огромное число сигналов из-за приложения, которое на ней выполняется. Внезапный всплеск количества сигналов на определенном IP-адресе может указать на развивающуюся атаку на эту машину. Затем можно принять меры для повышения безопасности этой машины, провести сканирование уязвимостей, проверить уровень "залатанности", отбрасывать на маршрутизаторе пакеты из враждебного источника и т.д.
Кто атакует?
Определите исходящий IP-адрес, проявляющийся чаще всего. Перейдите с основной страницы к списку исходных IP-адресов. Это покажет IP-адрес и полностью квалифицированное доменное имя и подскажет, откуда идет атака. Сортировка по количеству сигналов позволит увидеть самых злостных нарушителей в терминах порождаемых сигналов. Если IP-адреса с наибольшим количеством сигналов находятся в вашей сети, то, вероятно, имеется внутренний злоумышленник или приложение, которое включает сигнал. Используйте рассмотренный выше процесс для углубления на уровень данных сигнала и анализа сигнала. Если сигналы тревоги порождены внешними IP-адресами, то желательно определить, законен ли трафик, направленный в вашу сеть, или это реальная атака. Просмотрите отдельные сигналы, чтобы понять, что пытаются делать. Щелкните мышью на IP-адресе, будет выведена страница с дополнительной информацией об адресе и некоторыми опциями для дальнейшего анализа. В ACID можно применить к этому адресу различные функции, такие как обратный поиск DNS, поиск ARIN и даже поиск Sam Spade (аналогичный средству, рассмотренному). Выдача этих функций должна подсказать вам, какая организация владеет этими IP-адресами, контактные адреса электронной почты их центра сетевых операций, и адреса для сообщений о злоупотреблениях (если таковые имеются). Можно использовать эти контактные адреса при регистрации жалобы на выявленную активность. Если вы заметите, что какие-то адреса появляются вновь и вновь, их можно отфильтровать на маршрутизаторе или межсетевом экране.
Какой сервис атакуется чаще всего?
Определяя порты, на которых чаще всего возникают сигналы, можно понять, на какие сервисы направлено большинство атак. Если вы видите много сигналов на основе Web, следует уделить повышенное внимание усилению защиты web-серверов. Если сигналы показывают высокую активность NetBIOS Windows, то необходимо провести ревизию прав доступа в Windows и политики паролей. Иными словами, анализ подскажет, на каких сервисах сосредоточиться в первую очередь.

Ежедневное применение ACID

Располагая работающей программой ACID, настроенной в соответствии с конфигурацией сетевой системы обнаружения вторжений, следует взять за правило проверять как минимум раз в день, какие новые сигналы были сгенерированы. Лучше всего утром делать первую проверку, а перед уходом с работы - повторную. Если есть персонал, работающий после окончания дневной смены, то и ему можно поручить проверку базы данных сигналов ACID.
После входа в базу данных ACID можно сразу перейти в раздел Snapshot и щелкнуть мышью на Most Recent Alerts, чтобы быстро просмотреть вновь поступившие данные о сетевой активности. Будут выведены все сигналы в хронологическом порядке. Если по-прежнему генерируется настолько много сигналов, что их анализ затруднителен, то в разделе Today's Alers выберите Unique. Будут показаны все сегодняшние сигналы, сгруппированные по типам, и можно видеть, какие из них порождают больше всего трафика. Полезны также опции Last 24 Hours и Last 72 Hours из раздела Snapshot. Они позволят выявить наиболее часто встречающиеся сигналы, адреса, и порты за различные периоды времени.

Графическое представление данных ACID

Если вы предпочитаете зрительные образы, или вам нужны графики для демонстрации руководству, воспользуйтесь имеющимися в ACID средствами для построения графиков и диаграмм на основе базы данных сигналов. Эти средства пока имеют статус экспериментальных, и для работы с ними необходимы графические модули PHP, перечисленные в начале этого раздела, однако они удобны для графического вывода итоговых данных Snort. Графические средства можно вызвать, щелкнув мышью на Graph Alert Data сразу под прямоугольником со статистикой сигналов на основном экране ACID. В результате будут отображены графические опции. Данные для графиков можно организовать следующим образом:

  • По времени (час, день, месяц) относительно числа сигналов;
  • По IP-адресам (исходным или целевым) относительно числа сигналов;
  • По портам TCP или UDP (исходным или целевым) относительно числа сигналов;

Задайте параметры с помощью раскрывающихся полей и щелкните мышью на Graph Data. Проверьте, что заполнили все поля, иначе будет выдано сообщение об ошибке. ACID построит и выведет график.

Обслуживание базы данных ACID

По мере роста базы данных сигналов ей периодически требуется некоторое обслуживание, чтобы она не становилась слишком большой и громоздкой. Ваша статистика и графики также будут более точными, если архивировать давние сигналы с множеством ложных срабатываний. Кроме того, периодическая очистка базы ускорит обработку запросов.
Для архивирования сигналов воспользуйтесь регулятором запросов внизу основного экрана. Создайте запрос для сигналов, которые хотите архивировать, например, все сигналы, сгенерированные за последний год. Затем выберите Archive Alerts в качестве действия для запроса. Можно выборочно архивировать сигналы по дате, типу и другим критериям. Можно также выбрать простое копирование сигналов в архив или их удаление. Архивированные сигналы будут помещаться в собственную базу данных с именем, которое было задано в файле acid_conf.php в процессе конфигурирования.
Следует заархивировать все сигналы первых нескольких месяцев работы, в течение которых вы настраивали сенсоры Snort. После этого данные будут в большей степени отражать реальные атаки, а не ложные срабатывания. Неплохо также выполнять архивирование как минимум раз в год, или, возможно, ежеквартально, в зависимости от количества зарегистрированных сигналов. Как правило, нежелательно иметь в базе данных одновременно более 100000 сигналов.
Итак, теперь вы знаете, как построить законченную сеть Snort обнаружения вторжений с множеством сенсоров, протоколирующих сигналы в базу данных, которую можно применять для анализа данных и генерации отчетов. Это поможет лучше использовать данные об обнаруженных вторжениях, получить максимальную отдачу от усилий по обеспечению безопасности и запастись наглядными отчетами и графиками для демонстрации руководству. Теперь мы рассмотрим несколько средств, помогающих разобраться с результатами сканирования уязвимостей.


Флэми Тех советует:
Аккуратно используйте названия!
Будьте осторожны в разговоре со своим руководством о применении Snort или ACID на работе. Убедитесь, что руководство понимает, что это ценные программы управления, а не противозаконные наркотические вещества!

Одна из проблем при использовании сканера уязвимостей Nessus для сканирования сетей среднего и большого размера состоит в том, что отчеты получаются весьма устрашающими. Вроде бы и форматы отчетов Nessus хороши, и перемещаться по HTML-документам легко, но, получив на анализ пару сотен страниц данных, довольно трудно выделить на фоне всего этого шума важные данные. Было бы прекрасно иметь возможность организовать результаты сканирования удобным для изучения способом. Для того чтобы анализировать результаты, следует поместить их в базу данных, а не выдавать в виде стандартного плоского файла. Желательно также иметь простой доступ к данным, например, посредством web-интерфейса. Располагая такими средствами, можно легко выделить наиболее важные данные и проанализировать изменение результатов сканирования во времени, чтобы понять, становится ли сеть более или менее защищенной.
К счастью, имеется несколько продуктов, интегрирующих Nessus с базой данных: NesQuick, Java Nessus Report Manager и Nessus PHP Interface (NPI). Для этой книги я по ряду причин выбрал NPI. Во-первых, это на самом деле продукт с открытыми исходными текстами без каких-либо коммерческих завязок. Во-вторых, он опирается на MySQL и PHP, которые мы уже применяли для других средств, таких как ACID. C помощью этих приложений NPI обеспечивает перенос данных Nessus в базу данных и их просмотр при помощи web-навигатора.
NPI по своей архитектуре аналогичен ACID. Он использует базу данных MySQL для хранения результатов и поддерживающий PHP web-сервер для просмотра и запроса результатов. На показаны логические компоненты NPI. Одно из различий между архитектурами Snort и Nessus состоит в том, что в Nessus есть две отдельные части, порождающие данные: клиент, инициирующий сканирования, и выполняющий их сервер. В некоторых случаях они могут находиться на одной машине, но на рисунке изображены два различных физических сервера. Имеется также сервер базы данных, куда записываются данные сканирования, и web-сервер, предоставляющий интерфейс к данным. База данных и web-сервер также могут находиться на одной машине или на двух разных.
Иллюстрирует потоки данных и логические части системы NPI. Клиент Nessus входит на сервер Nessus для инициации сканирования некоторого объекта. Данные сохраняются на клиентской машине в собственном формате Nessus .nbe. Когда вы получаете необработанный файл, NPI выполняет процедуру его преобразования и импортирует данные в БД MySQL. После этого данные можно просматривать и запрашивать БД посредством любого web-навигатора через PHP-интерфейс. Этот способ анализа результатов сканирования имеет существенные преимущества, поэтому стоит немного потрудиться и установить NPI.

Установка NPI

Прежде чем приступать к установке NPI, необходимо располагать работающим сервером MySQL и web-сервером Apache с поддержкой PHP. Если они еще не установлены, то вернитесь назад к соответствующим разделам этой лекции и сделайте это. Когда серверы SQL и Web будут готовы к работе, выполните следующие действия по установке NPI.

  1. Возьмите файл с прилагаемого к книге компакт-диска, распакуйте и "растарьте" программу. Поместите содержимое в отдельный каталог, имя которого не имеет значения (если все файлы находятся в одном каталоге). Например, подойдет каталог /usr/local/nessus-php, если, конечно, у вас есть право на запись в него.
  2. Перейдите в этот каталог и отредактируйте файл nsr-php с помощью текстового редактора. Этот файл содержит переменные (строки, начинающиеся с $), которые позволяют программе контактировать с сервером MySQL. В табл. 8.5 перечислены переменные, которые необходимо отредактировать, и даны рекомендации для задания их значений.

Таблица 8.5. Переменные NPI для сервера MySQL

Переменная

Описание

$db_host

Задается хост, на котором будет выполняться сервер MySQL. Если сервер MySQL выполняется на той же машине, что и web-север, укажите localhost. В противном случае введите IP-адрес или имя хоста машины MySQL

$db_user

Имя пользователя, используемое для входа в базу данных MySQL. Может совпадать с именем, заданным при установке MySQL

$db_pass

Пароль, соответствующий вышеуказанному пользователю

$db_database

Имя базы данных, созданной для хранения данных NPI. По умолчанию NPI создает базу данных с именем nessus, но при желании его можно заменить другим

$db_suuser

Административный пользователь базы данных MySQL. Требуется для процедуры nsr-php. По умолчанию используется root, что годится для большинства установок. Отметим, что это не то же самое, что пользователь root операционной системы

$db_supass

Пароль пользователя root для mySQL, соответствующий вышеописанному счету $db_suuser

$your_domain

Список доменов, имена которых вы хотите вырезать из вывода. Это очистит отчеты, если вы хотите, чтобы в выдаче присутствовали только имена машин, а не полные имена хостов Интернета. Это необязательная переменная

  1. Откройте файл nsr в текстовом редакторе и создайте в нем те же элементы, что и в шаге 2 (табл. 8.5). Проверьте, что маршрутное имя каталога встраиваемых модулей Nessus задано правильно. В большинстве установок эти модули должны находиться в подразумеваемом каталоге /usr/local/lib/nessus/plugins. Убедитесь, что это действительно так. В противном случае сделайте необходимые изменения в файле nsr.
  2. Отредактируйте файл nessusphp.inc, изменяя переменные так же, как и в двух предыдущих шагах.
  3. Создайте базу данных Nessus. Для этого нужно выполнить процедуру nsr-php:
php nsr-php -b

Для ваших данных сканирования будет создана база данных MySQL с именем nessus. Можно войти в нее и убедиться, что нужные таблицы созданы.

  1. Проверьте, что база данных создана должным образом.
    • Войдите в MySQL с помощью команд, описанных выше в этой лекции, во врезке, посвященной MySQL.
    • Наберите show databases; (не забудьте точку с запятой) в командной строке MySQL. Будет выдан список всех баз данных, и среди них должна присутствовать вновь созданная база данных Nessus.
    • Перейдите в эту базу данных, используя команду use NESSUS;, а затем наберите команду show tables;. Вы должны получить результаты, показанные, - все три таблицы из базы данных nessus.
  2. Перенесите файлы из подкаталога www установочного каталога NPI во вновь созданный подкаталог корневого каталога документов web-сервера. Задайте правильные режимы доступа для файлов. В этом месте вы будете осуществлять доступ к базе данных Nessus. Выполните следующие команды из каталога nessus-php:
mkdir /usr/local/apache2/htdocs/nessus-php
mv ./www /usr/local/apache2/htdocs/nessus-php
chown -R www:www /usr/local/apache2/htdocs/nessus-php
chmod 755 /usr/local/apache2/htdocs/nessus-php/*

Не забудьте изменить маршрутное имя корневого каталога документов Web, если оно не такое, как в примере. При желании можно изменить имя каталога, в котором находятся файлы nessus-php. В приведенном примере страница доступа NPI помещается в подкаталог nessus-php корневого каталога документов Web. Для пользователя и группы, которые будут осуществлять доступ к базе данных MySQL, в примере использовано одно системное имя (www). Для повышения безопасности заведите специального пользователя, которому будет разрешено только чтение данных. В этом случае необходимо заменить www:www на соответствующих пользователя и группу, которым разрешено только чтение. Необходимо сделать это и для аналогичного счета MySQL.
Программа NPI установлена.

Импорт результатов сканирования Nessus в NPI

Теперь мы готовы к импорту результатов сканирования Nessus в базу данных.

  1. Примените процедуру nsr к каждому импортируемому файлу с результатами сканирования Nessus. (Для этого, очевидно, у вас должны быть файлы проведенного сканирования, сохраненные в собственном формате .nbe.) NPI также допускает и преобразует более старый формат Nessus, .nsr. Наберите следующую команду для запуска nsr из командной строки:
./nsr ./scans/scan.nbe

Замените ./scans/scan.nbe на маршрутное имя своего файла сканирования. Команда импортирует исходный файл Nessus в базу данных. Она также проверит встраиваемые модули Nessus и создает записи в базе данных для всех новых модулей, которые могли быть добавлены.

  1. Теперь все готово к просмотру результатов сканирования Nessus в базе данных. Откройте web-навигатор и введите IP-адрес web-сервера NPI с маршрутным именем индексного файла Nessus-php, например:/. Результаты должны появиться в интерфейсе PHP, позволяющем выполнять поиск и сортировку.

Применение NPI
Теперь можно просматривать результаты сканирования, как любую другую базу данных, сортировать их и выполнять запросы для поиска определенных уязвимостей, хостов и т.д. Имеется много способов анализа результатов Nessus с помощью NPI. Можно выполнять сортировку на основе:

  • Хоста (IP-адреса) с наибольшим количеством уязвимостей;
  • Наиболее распространенной уязвимости;
  • Наиболее распространенной категории средств использования уязвимостей;
  • Наиболее часто эксплуатируемого сервиса (номера порта);
  • Даты сканирования или диапазона дат;
  • Номера CVE или CAN.

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

Рождение проекта с открытыми исходными текстами

Моя консультационная компания активно применяет Nessus и Snort. Мы также используем ACID для управления системами обнаружения вторжений. Нам требовалось аналогичное средство для управления сканированиями Nessus. Хотя в NPI имеются некоторые очень удобные возможности, он все же не вполне удовлетворял наши потребности. Нам нужно было инициировать сканирования через web-интерфейс, а не только просматривать последние результаты. Мы также пришли к выводу, что ручной импорт результатов каждого сканирования труден и отнимает много времени. У нас десятки сканирований, которые нужно выполнять в самое разное время, и, поскольку они обычно принадлежат различным организациям, их следует отслеживать раздельно. На самом деле мы хотели иметь средство, управляющее различными конфигурациями сканирования, планирующее их, выполняющее их автоматически и импортирующее результаты в соответствующую базу данных.
Мы не смогли найти средства с открытыми исходными текстами, удовлетворяющего всем перечисленным требованиям, поэтому мы оказались перед выбором: искать подходящий коммерческий продукт или выполнить собственную разработку. Как оказалось, даже коммерческие сканеры уязвимостей предлагали не совсем то, что требовалось для планирования и отслеживания данных сканирования различных клиентов. Очевидно, написание нового сканера уязвимостей "с нуля" было бы непродуктивным. Поэтому была выдвинута идея разработки дополнительного модуля для Nessus в качестве проекта с открытыми исходными текстами. Мы рассмотрели ряд вопросов, чтобы понять, насколько это целесообразно. Если вы собираетесь писать свою программу с открытыми исходными текстами, вам следует сделать то же, принимая во внимание следующие факторы.

Нет ли уже чего-то подходящего?

Прежде всего, поищите в Web, нет ли каких-либо средств, делающих то, что вам нужно. Посмотрите в таких местах, как Sourceforge.net и Freshmeat.net, используйте Google и другие поисковые машины. Велика вероятность, что для решения вашей задачи что-то уже существует. Если будет найдено "почти, но не совсем то", возможно, это можно использовать в качестве основы или вспомогательного средства при создании своей программы, как мы и сделали в случае NPI. Даже если ничего не существует, можно найти некоторые ответы на часто задаваемые вопросы или сайты с полезной для проекта информацией. Во время исследования вы можете также найти людей с аналогичной проблемой, желающих участвовать в проекте.

Имеет ли ваша программа широкую область применения?

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

Разрешено ли вам выпускать свой продукт как открытое ПО?

Если задуманный проект входит в ваши обязанности наемного работника, убедитесь, что вам разрешат открыть исходные тексты. Если это часть большой собственной программы организации, то маловероятно, что исходные тексты позволят открыть. Однако, если это самостоятельная программа, то с учетом выгод дополнительной критики и помощи сторонних разработчиков, а также бесплатной рекламы, вполне вероятно, что руководство возражать не будет. Проясните этот вопрос, прежде чем начать распространение исходных текстов, если дорожите своей работой.
Мы прошли через этот процесс и решили, что по приведенным выше соображениям стоит разработать собственное дополнение к Nessus как проект с открытыми исходными текстами. Мы назвали эту программу Nessus Command Center (NCC). Вы присутствуете на публичной премьере этой программы.

Появление NCC обусловлено имевшейся у нас потребностью в средствах управления для автоматизации сканирования и более качественного анализа результатов. Описанное выше средство NPI вполне успешно импортирует данные Nessus в базу данных, но не решает вопросов планирования, да и интерфейс оставляет желать лучшего. Чтобы не изобретать колесо, мы применили в нашем проекте web-интерфейса составные части NPI и добавили модули управления и планирования. Проект преследовал цель создания следующих сущностей:

  • Платформа управления для Nessus-сканирования. Нам требовалось средство отслеживания сканирований для различных организаций с различными конфигурациями и даже различных групп организаций. Как консультационная компания, мы имеем дело с множеством различных организаций. У нас даже есть посредники, заказывающие для других организаций сканирование с использованием нашей инфраструктуры. Мы хотели получить единую панель управления всеми этими разнородными сущностями, сохраняя их разделенность.
  • База данных расписаний и интерфейс для Nessus. Первой целью была разработка способов каталогизации данных сканирований, планирования сканирований и их автоматического выполнения. Мы хотели иметь возможность отслеживать различные сущности, так как сканирования будут проводиться в интересах многих организаций. Должен существовать административный уровень для создания и планирования сканирований, а также потенциальная возможность для клиентов входить и модифицировать определенные части своей конфигурации сканирования, такие как время, сканируемые хосты и т.д. База данных должна поддерживать web-интерфейс, так как наши заказчики и агенты, обращающиеся к системе для настройки своих сканирований, могут располагаться вне нашего межсетевого экрана.
  • Интерфейс базы данных для результатов Nessus. Эта цель уже была частично достигнута в программе NPI, но мы хотели улучшить интерфейс, который представлялся нам рудиментарным и не поддерживал, например, многопользовательский доступ с различными уровнями полномочий. Мы планировали использовать NPI в качестве основы для этой части программы. А так как NPI имеет лицензию GPL, и наша программа будет иметь лицензию GPL, это не будет создавать никаких проблем.
  • Web-интерфейс для настройки всех параметров Nessus. На самом деле, это необязательное требование. При изучении проблемы мы обнаружили, что в большинстве сканирований применяется лишь около пяти различных конфигураций. Однако было бы удобно иметь возможность настраивать все возможные параметры сканирования Nessus прямо из Web, не загружая клиента Nessus. Это позволяет вводить параметры сканирования прямо из офиса заказчика или из любого другого места. Мы осмотрелись и обнаружили еще один проект с открытыми исходными текстами, называемый Inprotect, который предлагал web-интерфейс для Nessus. Код был выпущен с лицензией GPL, поэтому мы могли использовать его в качестве руководства к нашим действиям в этой области. В связи со сложной природой данной задачи мы решили, что эта возможность не будет присутствовать в бета-версии.

Платформы для 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, имелись и некоторые существенные различия. Мы разработали диаграмму этих потоков, чтобы можно было проследить все логические связи между системами.
Для проекта мы создали также web-сайт и страницу Sourceforge. Web-страница расположена по адресу http://www.netsecuritysvcs.com/ncc. Хотя мы решили, что в нашей группе достаточно талантов для завершения проекта, никогда не мешает познакомить других людей из сообщества открытого ПО с тем, что вы делаете. Кроме того, когда проект будет закончен, может понадобиться помощь при переносе на другие платформы и при добавлении новых возможностей.
Когда все приготовления были закончены, мы начали работу, как правило, проводя еженедельные встречи для отслеживания продвижений. Поскольку это было не основное занятие и у всех имелась другая работа, потребовалось около года для завершения программы в стадии бета-версии. Тем не менее, ее уже можно использовать и теперь, с помощью сетевого сообщества разработчиков, NCC можно расширять и улучшать. Написание NCC как проекта с открытыми исходными текстами, несомненно, требует несколько больше усилий для внешних взаимодействий, чем выполнение его как частного проекта, поскольку необходимо выполнить исследование существующих программ и интегрировать базы исходных текстов, но зато мы смогли воспользоваться существующими исходными текстами, что значительно сократило общее время разработки. Мы также знали, что если наша система станет популярной, ее можно будет перенести на другие платформы или даже использовать в качестве основы для более развитой программы, что нам только помогло бы. В конце концов, как показал опыт, в выигрыше осталась как моя компания, так и внешние пользователи.

Установка NCC

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

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

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

  1. Программа автоматически инициализирует базу данных и скопирует все файлы в подходящие места. Во время установки будет предложено ввести дополнительную информацию. В табл. 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 будет выглядеть следующим образом:
    Отобразится входная страница NCC.
  1. Введите имя пользователя и пароль, заданные в процессе установки.

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

Применение NCC

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

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

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

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

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

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

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

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

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

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

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

  1. Выберите тип сканирования: будет ли сканироваться один адрес, подсеть или диапазон адресов.
  2. В поле 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. Появится экран управления расписанием.
  2. Выберите организацию и цель в этой организации. Здесь также доступно раскрывающееся меню выбора, отражающее уровень пользователя, под именем которого вы вошли в систему.
  3. Выберите дату сканирования, время, частоту, число повторов.

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

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

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

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

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

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

 

 
На главную | Содержание | < Назад....Вперёд >
С вопросами и предложениями можно обращаться по nicivas@bk.ru. 2013 г.Яндекс.Метрика