Тестирование безопасности Apache с помощью Nikto
Введение
У вас появился новый сервер LAMP, например на Ubuntu 6.0.6 (Dapper Drake), и вы хотите убедиться, что веб‑сервер Apache настроен безопасно. Nikto — это бесплатный инструмент сканирования уязвимостей веб‑серверов: он ищет известные конфигурационные ошибки, устаревшие компоненты и потенциально опасные сценарии. Этот материал основан на практической главе из книги по ужесточению Apache и показывает только установку и первый запуск Nikto — для полного процесса hardening потребуется дополнительное изучение.
Важно: сканируйте только те серверы, которыми вы владеете или на которые у вас есть разрешение. Несанкционированное сканирование может привести к юридическим последствиям.
Что такое Nikto и зачем он нужен
Nikto — это набор Perl‑скриптов, который автоматизирует проверку конфигурации веб‑сервера и поиска известных уязвимостей. Он полезен как быстрый первичный аудит: выявляет открытые каталоги, устаревшие версии ПО, неправильные права доступа и часто встречающиеся плохие конфигурации.
Кратко о терминах:
- SSL/TLS — протоколы шифрования для защищённых соединений.
- IDS/IPS — системы обнаружения/предотвращения вторжений.
Содержание руководства
- Установка модуля Net_SSLeay (для проверки SSL)
- Загрузка и обновление Nikto
- Базовый и расширенный запуск Nikto
- Разбор результатов, когда Nikto ошибается
- Альтернативные инструменты и сопутствующие процессы
- Чек‑листы для ролей, методология и критерии приёмки
1. Установка Net_SSLeay
Net_SSLeay — это модуль Perl, добавляющий поддержку SSL‑соединений. Он потребуется, если вы собираетесь тестировать HTTPS‑сервера.
Я рекомендую хранить исходники в каталоге /src. Пример команд:
mkdir /src
cd /srcСкачайте архив модуля (пример с версией, указанной в исходном материале):
wget http://search.cpan.org/CPAN/authors/id/F/FL/FLORA/Net_SSLeay.pm-1.30.tar.gzРаспакуйте и установите:
tar -xzvf Net_SSLeay.pm-1.30.tar.gz
cd ./Net_SSLeay.pm-1.30
perl Makefile.PL
make
make installПосле установки проверьте, что Perl видит модуль (запуск тестового скрипта или импорт модуля в интерактивном Perl может помочь).
2. Установка Nikto
Скачайте последнюю стабилизацию Nikto с сайта проекта (в исходнике использовалась версия 1.35). Выполните:
cd /src
wget http://www.cirt.net/nikto/nikto-current.tar.gz
tar -xzvf nikto-current.tar.gzNikto использует библиотеку LibWhisker для сетевой работы. В комплекте идет версия, но имеет смысл обновить её:
wget http://www.wiretrip.net/rfp/libwhisker/LW.pm
cp LW.pm ./nikto-1.35/LW.pmПереместите распакованный каталог в постоянное место, например /usr/local:
mv nikto-1.35/ /usr/local/niktoОбновите базу данных плагинов и сигнатур Nikto:
cd /usr/local/nikto
perl nikto.pl -update3. Базовое использование Nikto
Простой тест на локальной машине:
perl nikto.pl -h localhostПример запуска для удалённого хоста с попыткой обхода IDS/IPS (опция -evasion):
perl nikto.pl -h example.com -evasion 1Опция -evasion имеет несколько режимов (в исходном материале упомянуто 9 вариантов). Режим 1 — случайное кодирование URI; такие сканы идут медленнее.
Полезные дополнительные опции (общие и часто используемые):
- -h
— цель (IP или домен); - -evasion
— режим увёртки против IDS; - -update — обновление баз;
- -output
— сохранить результат в файл; - -Format
— выбрать формат вывода (как правило, доступен текст, CSV, XML).
(Проверьте README/nikto_usage.html в каталоге nikto/docs для точных флагов вашей версии.)
4. Как интерпретировать результаты и когда Nikto ошибается
Nikto генерирует отчёты с категориями проблем: информационные сообщения, устаревшие компоненты, конфигурационные ошибки и потенциально эксплуатируемые уязвимости.
Когда Nikto может дать ложные срабатывания:
- Скрипты или заглушки вызывают похожие подписи на уязвимости;
- Защитные механизмы (WAF) или прокси искажают ответы сервера;
- Частные, кастомные приложения возвращают нестандартные заголовки или страницы, похожие на сигнатуры.
Как снижать ложные срабатывания:
- Сопоставляйте сообщения Nikto с логами сервера и точными HTTP‑ответами;
- Повторяйте проверки вручную для критичных проблем;
- Используйте другие инструменты для подтверждения (сканирование модулей, ручное тестирование).
5. Альтернативы и дополнения
Если Nikto не подходит как единственный инструмент, рассмотрите следующие варианты:
- Nmap с NSE (скрипты обнаружения веб‑уязвимостей);
- OWASP ZAP — интерактивный прокси и сканер для приложений;
- OpenVAS или Nessus — комплексные сканеры уязвимостей (часто используются в корпоративной среде);
- Burp Suite — мощный инструмент для тестирования веб‑приложений.
Ментальная модель: используйте Nikto для быстрого обзора конфигурации, затем подтверждайте находки более точечными инструментами и ручным тестированием.
6. Мини‑методология аудита веб‑сервера (шаги)
- Подготовка: резервные копии конфигураций и сайтов.
- Обновление инструментов: nikto -update, обновление LibWhisker и модулей Perl.
- Пробный запуск: локальный и внешний скан, базовый режим.
- Анализ: сопоставление с логами, классификация находок.
- Приоритеты исправлений: критичные уязвимости и устаревшие компоненты в первую очередь.
- Повторный тест и мониторинг: регрессионное сканирование после исправлений.
7. Чек‑листы по ролям
Чек‑лист для системного администратора:
- Выполнить обновление ОС и компонентов (Apache, PHP, OpenSSL).
- Проверить доступ к каталогам (Manual, Icons и т.д.).
- Отключить ненужные модули Apache.
- Настроить безопасные заголовки и права файлов.
Чек‑лист для разработчика веб‑приложений:
- Проверить вводимые данные и механизмы аутентификации.
- Убедиться в корректной работе CSRF/XSS‑защиты.
- Прогнать тесты на уязвимости бизнес‑логики.
Чек‑лист для команды реагирования на инциденты:
- Собрать и сохранить логи до и после сканирования.
- Оценить риск и план отката для внесённых изменений.
- Подготовить уведомления заинтересованным сторонам.
8. Критерии приёмки
Критерии для «чистого» результата после исправлений:
- Нет сообщений о критичных уязвимостях;
- Нет сообщений о доступности чувствительных директорий (Manual, Icons и т. п.);
- Отсутствуют предупреждения о явно устаревших компонентах;
- Прошло регрессионное сканирование без новых критичных находок.
9. Безопасность и подсказки по ужесточению
Практические шаги для повышения безопасности после сканирования:
- Регулярно обновляйте Apache, PHP и OpenSSL;
- Отключайте или ограничивайте доступ к стандартным директориям документации и иконок;
- Включите строгие политики заголовков (Content‑Security‑Policy, X‑Frame‑Options);
- Ограничьте информацию в заголовках сервера (ServerTokens, ServerSignature);
- Настройте WAF и IDS/IPS для слежения за аномалиями.
10. Риски и смягчения (матрица)
- Угроза: устаревший OpenSSL → Смягчение: обновление и проверка конфигурации TLS
- Угроза: доступ к служебным каталогам → Смягчение: убрать индексацию и настроить директивы доступа
- Угроза: ложные срабатывания → Смягчение: верификация по логам и ручное тестирование
11. Полезная шпаргалка и команды
Быстрые команды, упомянутые ранее:
cd /src
wget http://search.cpan.org/CPAN/authors/id/F/FL/FLORA/Net_SSLeay.pm-1.30.tar.gz
perl Makefile.PL
make
make install
cd /src
wget http://www.cirt.net/nikto/nikto-current.tar.gz
tar -xzvf nikto-current.tar.gz
wget http://www.wiretrip.net/rfp/libwhisker/LW.pm
cp LW.pm ./nikto-1.35/LW.pm
mv nikto-1.35/ /usr/local/nikto
cd /usr/local/nikto
perl nikto.pl -update
perl nikto.pl -h localhost
perl nikto.pl -h example.com -evasion 112. Глоссарий (1‑строчно)
- Nikto — сканер уязвимостей веб‑серверов на Perl.
- Net_SSLeay — Perl‑модуль для работы с SSL/TLS.
- LibWhisker — библиотека сетевых функций, используемая Nikto.
13. Когда Nikto не даст полного покрытия (ограничения)
- Nikto ориентирован на известные сигнатуры и плохие конфигурации, он не заменяет ручное тестирование бизнес‑логики приложения;
- Не всегда обнаруживает уязвимости 0‑day или специфичные уязвимости приложений;
- Может пропускать проблемы, связанные с аутентификацией, если скан проводится анонимно.
Заключение
Nikto — удобный и быстрый инструмент для первичного аудита безопасности веб‑серверов Apache. Он помогает выявить очевидные ошибки конфигурации и устаревшие компоненты, но не является «серебряной пулей». Используйте его как часть более широкой методологии аудита: обновления, ручная проверка, дополнительные сканеры и мониторинг.
Удачных и безопасных сканирований!
Сводка:
- Никто не гарантирует абсолютную безопасность, но регулярные сканирования помогают обнаруживать слабые места;
- Комбинируйте Nikto с другими инструментами и ручной проверкой;
- Всегда сканируйте только разрешённые активы и сохраняйте логи перед изменениями.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента