В ходе реализации проекта Nessus, начатой в 1998 г. несколькими энтузиастами с целью создания практичного и бесплатного инструмента анализа сетевой защищенности, появился одноименный сканер, не уступающий коммерческим аналогам, а по ряду характеристик и превосходящий их. Благодаря надежности работы, бесплатному распространению (GNU General Public License), открытости кода, модульной архитектуре сканер Nessus стал сегодня одним из самых распространенных инструментов анализа сетевой защиты.

Проверить надежность сервисов с его помощью можно как стандартными методами, так и имитацией сетевых атак с использованием базы данных, содержащей перечень уязвимых мест. Эта БД построена на модульном принципе, что обеспечивает необходимую гибкость в процессе работы. Для описания обнаруженной уязвимости и включения ее в базу данных в виде отдельного модуля применяется язык программирования Си или специально разработанный язык сценариев NASL — Nessus Attack Scripting Language. База данных обновляется практически ежедневно.

Сканер разработан с применением архитектуры клиент—сервер. Серверная часть сканера (пока только для POSIX-систем — Solaris, FreeBSD, GNU/Linux и т. д.) выполняет следующие функции: исследование сетевых систем, интерпретация полученных результатов, выдача рекомендаций, обновление базы данных по уязвимым местам. Клиентская часть сканера (под Unix- или Windows-системы) используется для задания параметров исследования систем и просмотра полученных результатов. Параметры исследования можно задать, используя как командную строку, так и графический интерфейс.

Сканер безопасности Nessus (версия 1.0.5) был сертифицирован Гостехкомиссией России при Президенте РФ (сертификат № 361 от 18 сентября 2000 г.). Получить сертифицированную версию сканера можно с ftp-сервера ftp://ftp.rbc.ru/pub/jet/nessus-saint. Разработчики сканера рекомендуют использовать последнюю его версию Nessus 1.2.7.

Механизм работы

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

После запуска сервера зарегистрированный пользователь может подключиться к серверу Nessus, используя клиентскую часть сканера. Для связи между клиентом и сервером, в зависимости от настроек, рекомендуется использовать шифрование (SSL). Перед началом исследования пользователь задает список тестируемых хостов, методы исследования, диапазон портов, список применяемых модулей (на данный момент их около 1140) и их конфигурацию. Некоторые виды атак, описанных в модулях, иногда приводят к сбою в работе или зависанию исследуемой системы.

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

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

Системные требования

Работа Nessus зависит от следующих программ:

GTK — The Gimp Toolkit — набор программных инструментов для создания графического интерфейса. Используется версия 1.2. Загрузить дистрибутив можно с ftp://ftp.gimp.org/pub/gtk/v1.2/.

Замечание 1. Если в вашей системе уже есть GTK, убедитесь, что программа gtk-config тоже установлена. Если нет, установите пакет gtk-devel из вашего дистрибутива.

Замечание 2. Если не хотите устанавливать GTK и/или у вас не установлен X11, скомпилируйте консольный клиент сканера, указав при конфигурировании nessus-core

$./configure —disable-gtk

Nmap — превосходный сканер портов. Дистрибутив доступен по адресу http://www.nmap.org/. Рекомендуется версия 3.00 или 2.54.

OpenSSL — используется при связи между серверной и клиентской частями Nessus, а также при тестировании SSL-сервисов. Дистрибутив доступен по адресу http://www.openssl.org. Устанавливать его необязательно, но желательно.

Установка

Есть несколько способов установки Nessus:

1. С помощью браузера lynx при подключении к Интернету можно набрать в командной строке

$lynx -source http://install.nessus.org | sh

Этот способ опасен тем, что на вашем компьютере выполняются команды, поступающие из Интернета. Если кто-либо изменил DNS-запись для install.nessus. org, он сможет выполнять на вашем ПК произвольные команды.

2. С помощью сценария установки nessus-installer.sh, который доступен на ftp://ftp.nessus.org/pub/nessus/nessus-1.2.7/nessus-installer/nessus-installer.sh. Для запуска сценария достаточно набрать в командной строке

#sh nessus-installer.sh

3. Установка Nessus для Unix-систем из tar-архива (дистрибутив последней версии Nessus доступен на сайте http://www.nessus.org)

$tar xvfz nessus-libraries-x.x.tar.gz
$tar xvfz libnasl-x.x.tar.gz
$tar xvfz nessus-core.x.x.tar.gz
$tar xvfz nessus-plugins.x.x.tar.gz
$cd nessus-libraries
$./configure && make
$/bin/su root
#make install
#cd ../libnasl
#./configure && make && make install
#cd ../nessus-core
#./configure (или без графической оболочки
 ./configure -disable-gtk)
#make && make install
#cd ../nessus-plugins
#./configure && make && make install

Для Linux-систем:

#echo ?/usr/local/lib? >> /etc/ld.so.conf
#ldconfig

Пользователи Solaris в .profile должны добавить строку

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/
 usr/local/lib

Убедитесь, что в переменной окружения системы указаны пути /usr/local/bin и /usr/local/sbin. Проверить это можно так:

$echo $PATH

Программы, входящие в состав Nessus

После завершения инсталляции сканера на вашей системе будут установлены следующие программы:

nasl — интерпретатор NASL-скриптов;

nasl-config — скрипт, показывающий ключи и флаги для компилятора, которые позволяют использовать библиотеку Nessus Attack Scripting Language в других программах;

nessus — клиент Nessus;

nessus-adduser — добавляет пользователя в базу сервера nessusd;

nessus-build — скрипт для создания модуля Nessus (.nes) из файла на языке Си (.с);

nessus-config — этот скрипт показывает ключи и флаги для компилятора, позволяющие использовать библиотеки Nessus в других программах;

nessus-mkcert — создает SSL-сертификат для сервера Nessus;

nessus-mkcert-client — создает SSL-сертификат для клиента Nessus;

nessus-mkrand — создает файл с произвольным содержимым, используется в дальнейшем для создания SSL-сертификатов;

nessus-rmuser — удаляет пользователя из базы сервера nessusd;

nessus-update-plugins — автоматически обновляет модульную базу данных уязвимых мест;

nessusd — сервер Nessus;

uninstall-nessus — скрипт деинсталляции Nessus.

Unix-клиент — выбор используемых модулей для сканирования

Подготовка к первому запуску сервера nessusd

Если вы успешно справились с установкой сканера, приступаем к запуску сервера Nessus — nessusd. Необходимо создать регистрационные записи пользователей для сервера Nessus:

#nessus-adduser         ,

затем создать SSL-сертификат для сервера:

#nessus-mkcert

и обновить базу данных уязвимостей:

#nessus-update-plugi

Запустите сервер:

#nessus -D

Проверьте, удачно ли он загрузился:

$lsof -ni|grep nessusd

В случае успешного запуска появится строка вида:

nessusd 10182 root4u IPv4 41346 TCP *:1241
 (LISTEN)

После этого сервер готов к подключению пользователей.

Unix-клиент — установка параметров сканирования

Запуск сервера

Синтаксис команды запуска сервера:

#nessusd [-v] [-h][-c config-file] [-a address ]
 [-p port-number] [-D] [-d]

Описание ключей:

-c , —config-file= — считать конфигурацию сервера из файла .

По умолчанию конфигурация сервера считывается из файла /usr/local/etc/nessus/nessusd.conf.

-a

, —listen=
— дает серверу указание прослушивать соединения только для этого
IP-адреса. Например, «nessusd -a 192.168.1.1» приведет к тому, что nessusd установит прослушивающее соединение только для 192.168.1.1. Эта опция удобна для запуска nessusd на шлюзе, если вы не хотите кому-нибудь из внешней сети разрешить подключение к nessusd.

-p , —port= — дает серверу указание прослушивать порт для установления подключений с клиентом. По умолчанию прослушивается порт 1241.

-D, — запустить сервер nessud в фоновом режиме.

-d, —dump-cfg — показать параметры компиляции Nessus.

-v, — поcмотреть версию сервера и закончить работу.

-h, — распечатать краткую справку.

Для выполнения операций запуска, остановки, обновления базы данных сервера соответственно:

#service scaner start
#service scaner stop
#service scaner update
Unix-клиент — просмотр отчета

Создание регистрационной записи пользователя

#nessus-adduser

В процессе создания регистрационной записи необходимо указать регистрационное имя пользователя, пароль, тип идентификации. Затем указать правила, ограничивающие возможность пользователя сканировать системы. Ограничения устанавливаются на основе списка диапазонов IP-адресов с указанием типа доступа (accept/deny — разрешить/запретить). Каждая запись, описывающая отдельный диапазон IP-адресов, вводится на отдельной строке. Завершается ввод правила символом конца файла — комбинацией клавиш +D. Синтаксис правила:

accept|deny ip/mask
default accept|deny

Запись default обязательно должна быть последней в правиле. Она определяет политику доступа пользователя. Например, правило, разрешающее исследование пользователем подсетей 192.168.10.0/24, 192.168.11.0/24 и сервера 217.107.209.2 и запрещающее доступ ко всему остальному, выглядит так:

accept 192.168.10.0/24
accept 192.168.11.0/24
accept 217.107.209.2/32
default deny

Правило, разрешающее пользователю сканировать все возможные IP-адреса, кроме подсети 192.168.1.0/24, выглядит так:

deny 192.168.1.0/24 
default accept

Если необходимо разрешить пользователю исследовать только ту систему, с которой он подключился к серверу Nessus, надо использовать переменную client_ip:

accept client_ip 
default deny

После подтверждения введенных данных создание регистрационной записи для сервера Nessus закончено.

В переменной конфигурации сервера per_user_base устанавливается путь к пользовательским каталогам (по умолчанию /usr/local/var/nessus/users). В дальнейшем для изменения ограничений для пользователя user_name по доступным диапазонам сканирования необходимо редактировать файл /usr/local/var/nessus/ users/user_name/auth/rules.

NessusWX — настройка параметров модулей

Удаление регистрационной записи пользователя

#nessus-rmuser user_name
NessusWX — основное окно программы

Обновление модульной базы данных уязвимых мест

#nessus-update-plugins

Программа устанавливает связь с сервером www.nessus.org. Затем получает список модулей и сверяет с уже установленными; если есть изменения, загружает и устанавливает новые модули. После обновления программа перегружает сервер nessusd для вступления изменений в силу. Рекомендуется проводить обновления ежедневно, например, поместив задачу в cron. Программа использует в своей работе lynx, gzip и tar.

Дополнительные ключи запуска:

-v — показать список недавно установленных модулей;

-l — показать список модулей, доступных на сервере www.nessus.org, с кратким описанием;

-r — просмотреть исходный код модуля pluginname;

-i — установить модуль ;

-h — вывод краткой справки.

NessusWX — выполнение сканирования

Клиенты Nessus

Синтаксис запуска консольного сканера из командной строки Unix-системы:

#nessus -q

host — IP- или доменное имя системы, где запущен сервер nessusd;

port — порт для подсоединения к серверу nessusd (по умолчанию 1241, раньше использовался порт 3001);

user — имя зарегистрированного в сервисе nessus пользователя;

pass — пароль пользователя;

targets-file — файл, содержащий список исследуемых систем;

result-file — файл отчета о проведенном исследовании.

Дополнительные параметры:

-T , —output-type=, где — формат представления данных в отчете: nbe, html, html_graph, text, xml, old-xml, tex, nsr (используется по умолчанию);

-V, —verbose — вывод промежуточных результатов сканирования на экран;

-x, —dont-check-ssl-cert — не проверять SSL-сертификат;

-v, —version — показать версию сервера nessusd;

-h, —help — краткая справка.

Пример:

$cat>list_ip <192.168.10.11

192.168.10.12

EOF


$nessus -V -T text -q localhost 1241 user password list_ip report_file

NessusWX — просмотр отчета

Работать с графическими клиентами для Nessus несколько проще. Используя графическую оболочку, можно быстро настроить параметры сканирования. Поддерживается экспорт отчетов в документы формата ASCII text, LaTeX, NSR, HTML, HTML с диаграммами.

Для Windows-систем в качестве клиента Nessus можно использовать программу NessusWX (последняя версия 1.4.2), которая распространяется по лицензии GNU General Public License. Получить дистрибутив и документацию по NessusWX можно на сайте http://nessuswx.nessus.org/. Поддерживается экспорт отчетов в форматы HTML, PDF, text.

NessusWX — настройка параметров сканирования

Язык сценариев NASL

Сканер безопасности включает специально разработанный для выполнения сетевых операций язык сценариев NASL (Nessus Attack Scripting Language), позволяющий быстро написать переносимый тест для проверки определенной уязвимости и гарантировать, что NASL-сценарий не сможет выполнить ничего, кроме своей задачи — проверки описанной уязвимости у выбранной цели.

С помощью языка NASL легко конструировать и отправлять TCP/UDP/ICMP/IGMP-пакеты с произвольным содержимым, устанавливать сетевые соединения. Он обеспечивает удобный высокоуровневый набор функций для проверки Web- и ftp-сервисов (ftp_log_i n(), ftp_get_pasv_port(), http_get(), is_cgi_installed() и т. д.). Встроенные ограничения сводят возможность создания модуля с двойным назначением («троянского») к минимуму. Разработчики гарантируют, что NASL-сценарий не пошлет ни одного сетевого пакета ни на какой хост, кроме выбранной цели; не будет выполнять на вашей локальной системе никаких команд; не сможет читать локальные файлы.

Необходимо отметить, что NASL в общем смысле не является мощным языком сценариев, подобным Perl или Python. У него только одна цель: тестирование безопасности сетевых сервисов — и в этом он превосходит любой другой язык. Писать модули для сканера Nessus на NASL гораздо удобнее благодаря оптимизации для Nessus, переносимому и легко читаемому коду, а также общим чертам с языком Cи — синтаксис и идеология у них отчасти схожи.

Созданные сценарии можно использовать, подключив модуль к серверу nessusd через nessus-update-plugins или пользуясь интерпретатором nasl, входящим в состав Nessus.

Вот чего нет в NASL, так это структур и отладчика (пока).

NessusWX — список используемых модулей

Поддержка

Nessus имеет хорошее информационное сопровождение. Проследить развитие проекта можно на сайте http://cvs.nessus.org/. Все сообщения об обнаруженных ошибках публикуются по адресу http://www.nessus.org/bugs/.

В проекте есть несколько дискуссионных групп:

nessus — общая дискуссионная группа;

nessus-devel — новости и обмен мнениями разработчиков;

nessus-announce — сообщения о возможностях новых версий сканера;

plugins-writers — для разработчиков новых модулей. Если вы собираетесь разрабатывать модули, вам необходимо на нее подписаться.

Узнать подробности подписки на дискуссионные группы можно по адресу http://list.nessus.org.

Пожелания, замечания и советы

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

При сканировании всего диапазона tcp-портов (1—65535) для одного хоста объем трафика составляет около 5 Мбайт. Суммарный объем трафика: количество проверок Ё число машин Ё 5Mбайт. Посчитайте сами до того, как провайдер выставит вам счет за трафик.

Оно также может существенно замедлить работу сети, если ее пропускная способность невелика.

Сканирование способно вызвать сбой в работе или зависание исследуемой системы.

Осуществляя проверку безопасности сети, необходимо делать ее с разных точек, как изнутри локальной сети (зона DMZ), так и снаружи (из Интернета).

Сканер безопасности Nessus поставляется as is» без каких бы то ни было обязательств. Авторы Nessus снимают с себя всякую ответственность за последствия, вызванные применением сканера. Ответственность за все риски, связанные с применением и действиями сканера Nessus, несет пользователь.

* * *

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

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