Библиотека сайта rus-linux.net
Nessus: инспектор по отверстьицам для маленьких жучков
Писано для журнала "Хакер-Спец". Лексика оригинала сохранена.
В одной из своих предыдущих статей, мой маленький безголовый друг, я тебе успел рассказать про средства разведки и анализа. Точнее, средством анализа является твоя голова, а представленные программы тебе лишь приносят пишу для размышлений. Твоя задача – правильно её пережевать и проглотить.
В этот раз я тебе намерен подробно рассказать про одну из самых лучших программ проверки комплексной безопасности сетей и узлов под Linux. Называется эта программа Nessus.
Nessus (http://www.nessus.org) состоит из двух частей: серверной и клиентской. Серверная часть (nessusd) предназначена для проведения тестовых атак и сбора информации в одну кучу. В то же время, клиент является простым интерфейсом пользователя для отображения собранной информации и предоставления её в удобоваримом виде. На сегодняшний день программа написана так, что серверная часть может работать на нескольких операционных системах стандарта POSIX (этот стандарт поддерживается операционныим системами Solaris, FreeBSD, GNU/Linux и другими), а вот клиенты есть как для Linux с использованием библиотеки GTK+ (the Gimp ToolKit, подробности смотреть тут: http://www.gtk.org), так и для Win32.
С чего начать? Ну наверное с того, чтобы скачать исходники с сайта. Потом попытаться собрать серверную и клиентскую часть. В моём дистре ALT Linux Master 2.2 Nessus версии 1.2.6 был в комплекте, поэтому мне напрягаться не пришлось. На сайте есть ссылка на версию 2.0.6. Тебе же возможно придётся пройти через огонь, воду и медные трубы при сборке. Кроме библиотеки GTK+, тебе потребуется cкачать и установить дополнительно пакет OpenSSL (www.openssl.org). Сборка и установка проблем вызвать не должны. Он нужен для работы системы разграничения доступа к серверу nessusd. Пакет можно выкачать в виде одного файла nessus-installer.sh, запустив который и ответив на несколько вопросов ты запустишь процесс конфигурации, компиляции и установки. Главное, чтобы необходисые библиотеки были. По крайней мере на стареньком Mandrake Linux 7.0 это всё прошло довольно гладко.
Конечно, если твой дистрибутив на базе rpm, то установка необходимых пакетов программ и библиотек существенно облегчается. По крайней мере, ты будешь в курсе того, что тебе ещё предстоит доустановить. Хоть компилировать самому не придётся. В случае дистрибутива Debian -- тебе просто повезло (apt-get весьма удобная штука).
Nessus – программа клиент-серверная, поэтому весьма небходимо разграничивать доступ к демону nessusd. В принципе тебе должно быть пофиг. Однако, данный инструмент разрабатывался для администраторов, а им очень важно, чтобы доступ к такого рода программам был строго ограничен. Для этих целей используется сертификация и парольный доступ. Сертификацию как раз и обеспечивает OpenSSL. После компиляции и установки нужно:
а) проверить наличие установленного сканера nmap. Если его нет – установить отсюда www.insecure.org/nmap/ или из дистрибутива. Nmap – необязательный, но весьма желательный для работы компонент. Сборка nmap проблем доставить не должна. Традиционные заклятия configure; make; make install не должны вызвать особых проблем. Программа прекрасно собирается на старых системах (проверено на Mandrake Linux 7.0 выпуска 2000-го года.).
б) создать сертификат для пользователей сервера командой nessus-mkcert (от root);
в) завести пользователя командой nessus-adduser (от root);
г) запустить демона nessusd (от root).
Если всё прошло нормально, то можешь от простого пользователя запускать клиента nessus и попыться войти в программу с тем именем и паролем, которые задал в nessus-adduser. Если что-то не получается (появляется окошко с надписью Login failed), то читаем документацию и man nessus. Справка хоть и на английском, но толковая.
После успешного входа появится главное окно. Вкладка Nessusd host позволит подключиться к демону nessusd. Там всё предельно просто. Указываешь адрес и порт на котором работает nessusd. Для локальной машины значения равны localhost и 1241.
Соединение прошло нормально – во вкладке Plugins увидишь список дополнительных модулей сканирования (если ты их додумался поставить). Включая и выключая интересующие тебя модули можно изменить поведение сканера. В некоторых случаях можно повысить производительность, если не включать заведомо ненужные проверки. Выбирая модуль, ниже ты увидишь его способности. Их тоже можно по-разному комбинировать.
Вкладка Prefs позволяет тебе настроить параметры проверок (параметров много и с ними надо разбираться конкретно). Среди параметров есть всевозможные таймауты, типы кодирования URL, типы и методы сканирования, варианты подбора перебором (раздел Brute force) и многое другое. Значения по-умолчания выставлены так, что в 90% случаех их достаточно для первичной разведки, но ты всегда можешь поиграться с ними и выявить наиболее подходящие для тебя.
Вкладка Scan options поможет задать дополнительные опции. Можно выбрать методы сканирования портов (в том числе и nmap), диапазоны сканируемых портов, число узлов, сканируемых в одно и то же время.
Самое главное -- Target selection, тут ты задаёшь цель своей разведки. Если не получится за раз, то сессию сканирования можно сохранить и потом продолжить. Список целей также можно взять из файла.
Закладка User даст тебе возможность настроить правила пользования сервером nessusd (более подробно тебе расскажет документация). Для каждого подбзователя можно задать свой набор правил. Что удобно, если сервером nessusd пользуются несколько человек. Программа-то многопользовательская.
Сокращение KB означает базу знаний. Пригодна в случае сканирования множества узлов. Проще говоря, результаты сканирования не выбрасываются, а накапливаются и используются для дальнейшего анализа. Кроме того, базу удобно использовать для управление процессом сканирования больших сетей. Можно, например запретить сканированеи узла, если недавно он уже был просканирован и результаты об этом етсь в базе знаний.
И напоследок: три кнопки внизу Start the scan (начать сканирование), Load report (загрузить отчет о сканировании), Quit (а это тоже переводить?).
Ну вот. Долгожданный момент. Пиши адрес исследуемого узла во вкладке Terger selection и дави на кнопку Start the scan. Процесс сканирования может занимать от нескольких секунд, до десятка минут в зависимости от качества и скорости коннекта. Во время сканирования выводится окно сообщений. Там нет ничего особо интересного кроме сообщений о ходе процесса сканирования. Чтобы нескучно было.
Вкусности выглядят так как показано на рисунке. Ради этого стоило потратить время на изучение программы . Я сканировал реальный сервер своего провайдера, стоящий под операционной системой Slackware Linux (версию не помню). Извини, братан, но реальный IPшник я тебе не дам. И не проси.
Итак. Оконце Subnet позволит выбрать интересующую тебя просканированную подсеть (если ты интересовался несколькими сразу), Host покажет конкретный узел, Port соответственно покажет список портов на изучаемом компьютере, поле Severity расскажет о серьезности узявимости сервиса на выбранном порте. Severity делятся на три вида: Security Warning указывает на потенциально возможные узявимости с рисками взлома средней (Medium) и низкой (Low) тяжести. Securitу Note даст общую информацию о сервисе на указаном порте, версию сервиса и что-нибудь дополнительное. Security Hole – самое интересное. Там рассказывается, что сервис подвержен уязвимости, указывается её тип, действие и дается рекомендация по ее устранению. Сюда попадают уязвимости со степенями уровней High (высокий) и Serious (тревожный).
В большом оконце ниже ты увидишь роспись “под хохлому”, где программа тебе расскажет всё про данный разведанный сервис на данном уровне severity.
На скриншоте показано, что на просмотреном мною узле уязвимость найдена в сервере http (порт 80). Конкретно дыра находится в сценарии guestbook.pl, найденная уязвимость очень серьёзная (security hole) и рекомендация сканера однозначна – remove it from /cgi-bin (удалить!).
Что со всем этим делать дальше – решать тебе. Я админ, и прямо сейчас я позвоню своему прову и скажу, что он идиот и ему надо либо нанять меня, либо уволиться по собственному желанию.