Регулярная проверка собственной инфраструктуры на известные уязвимости — базовая гигиена, а не роскошь. Greenbone Community Edition (исторически OpenVAS) даёт открытый сканер, базу проверок и веб-интерфейс, который можно поднять на одном сервере. Важное условие: сканировать можно только те системы, которыми вы владеете или на проверку которых есть письменное разрешение. Сканирование чужих адресов без согласия может нарушать закон и точно разрушает доверие.
Что именно вы разворачиваете
Greenbone — не один процесс, а набор сервисов. gvmd хранит конфигурацию и результаты, ospd-openvas или более новый openvasd выполняет проверки, модуль Notus сверяет версии пакетов с данными CERT, pg-gvm отвечает за PostgreSQL, redis-server — за очередь и кэш, gsa и nginx отдают веб-интерфейс. Понимание этой схемы помогает читать логи: если пропали результаты, смотрите не только веб-интерфейс, но и gvmd, и сканер.
Community Edition бесплатна, но не является «коробочным» продуктом. Обновления фидов приходят в виде образов контейнеров, а не сами по себе. Планируйте минимум четыре ядра, 8 ГБ ОЗУ и 60 ГБ диска; на слабой машине первичная инициализация базы и фидов может занять часы.
Подготовка сервера
Ставьте Docker из официального репозитория дистрибутива или с сайта Docker. Для Redis в контейнере Greenbone рекомендует разрешить overcommit — иначе фоновая запись может завершаться ошибкой:
sudo apt update
sudo apt install -y docker.io docker-compose-plugin curl
echo 'vm.overcommit_memory=1' | sudo tee /etc/sysctl.d/90-greenbone.conf
sudo sysctl --system
Проверьте, что служба запущена и текущий пользователь может работать с Docker. На сервере без графики это единственный разумный способ: веб-интерфейс открывается с вашей рабочей машины через SSH-туннель, а не напрямую из интернета.
Запуск контейнеров
Скачайте актуальный compose-файл со страницы документации Greenbone. Не сохраняйте старую копию «на память»: состав сервисов и теги образов меняются. Затем поднимите проект и задайте пароль администратора — учётная запись admin с паролем admin создаётся по умолчанию и должна быть изменена до первого сканирования.
mkdir -p ~/greenbone && cd ~/greenbone
curl -f -O -L https://greenbone.github.io/docs/latest/_static/compose.yaml
docker compose -f compose.yaml pull
docker compose -f compose.yaml up -d
docker compose -f compose.yaml exec -u gvmd gvmd gvmd --user=admin --new-password='СложныйПароль'
Интерфейс слушает https://127.0.0.1:9392. Сертификат самоподписанный, поэтому браузер предупредит — это нормально для локального стенда. Если нужен доступ с другой машины, используйте ssh -L 9392:127.0.0.1:9392 user@server и не публикуйте порт в интернет.
Фиды и первая инициализация
Пока фиды не загружены, сканирование бессмысленно: сканер просто не знает проверок. В текущих контейнерах данные фидов поставляются отдельными образами, а статус виден в веб-интерфейсе в разделе Administration → Feed Status. Первый запуск может занять от 30 минут до нескольких часов; не запускайте задачи, пока даты не обновились.
Обновление выполняйте в окно обслуживания: остановите проект, подтяните новые образы, поднимите снова. База и результаты сохраняются в томах, поэтому перезапуск их не стирает.
cd ~/greenbone
docker compose -f compose.yaml down
docker compose -f compose.yaml pull
docker compose -f compose.yaml up -d
docker compose -f compose.yaml logs --tail=100 gvmd
Инвентаризация: что и как сканировать
Сначала составьте список своих хостов. Простой ping-скан поможет увидеть, кто отвечает, но не заменяет учёт: в целевые хосты лучше добавлять конкретные IP или подсети, а не «всё, что нашлось». Отдельно проверьте, нет ли в списке гостевых устройств, принтеров и чужих виртуальных машин.
nmap -sn 192.168.10.0/24
ip -brief address
sudo ss -tulpn | head -30
В Greenbone создайте Target: укажите хосты, порт-лист (для начала OpenVAS Default) и метод проверки доступности. Для более глубокого анализа добавьте учётные данные SSH или SMB — аутентифицированное сканирование видит версии пакетов и конфигурации, которые снаружи не видны. Храните эти данные в защищённом месте и выдавайте отдельную учётную запись только на чтение.
Задача, расписание и разбор отчёта
Для первой задачи подойдёт конфигурация Full and fast: она не пытается эксплуатировать найденное, а проверяет версии и настройки. Не включайте «агрессивные» проверки без понимания последствий: часть тестов может нагрузить сервис или вызвать срабатывание защиты. Запускайте сканирование в согласованное окно и предупреждайте администраторов систем.
В отчёте смотрите не только на CVSS, но и на QoD (Quality of Detection), наличие эксплойта и доступность хоста из сети. Критическая уязвимость во внутреннем сервисе, закрытом файрволом, и та же уязвимость на периметре — разные риски. Для Debian и Ubuntu сверяйте версию пакета с security-tracker: часто дистрибутив уже выпустил backport-патч, и формальная версия ПО выглядит «старой».
docker compose -f compose.yaml exec -T gvm-tools \
gvm-cli --gmp-username admin --gmp-password 'СложныйПароль' \
socket --socketpath /run/gvmd/gvmd.sock --xml '<get_tasks/>'
docker compose -f compose.yaml exec -T gvm-tools \
gvm-cli --gmp-username admin --gmp-password 'СложныйПароль' \
socket --socketpath /run/gvmd/gvmd.sock --xml '<get_reports/>'
Экспорт в PDF удобен для отчёта руководству, XML и JSON — для автоматизации. Не пытайтесь закрыть всё сразу: сначала критические и высокие находки на периметре, затем системы с чувствительными данными, затем остальное. Повторное сканирование после исправлений подтверждает результат, а не создаёт иллюзию работы.
Обслуживание и типичные ошибки
- Сканирование чужих подсетей и адресов в интернете — нарушение закона и правил провайдера.
- Игнорирование фидов: сканер с базой полугодовой давности даёт ложное чувство безопасности.
- Отсутствие резервных копий томов PostgreSQL и
gvmd_data_vol— потеря истории и настроек. - Запуск тяжёлого сканирования в рабочее время без предупреждения.
- Автоматическое закрытие тикета по каждой находке без проверки ложных срабатываний.
Для резервной копии остановите проект, скопируйте тома или сделайте дамп PostgreSQL, затем запустите снова. Проверьте восстановление на тестовом стенде — непроверенная копия не считается backup.
Чек-лист перед первым запуском
- Есть письменное разрешение на сканирование каждого хоста и подсети.
- Определено окно работ и ответственный за системы.
- Пароль администратора изменён, порт не опубликован в интернет.
- Фиды загружены, дата обновления свежая.
- Настроены резервные копии томов и журналирование.
- Есть план обработки находок и сроки повторной проверки.
Итог
Greenbone Community Edition — рабочий способ поставить управляемое сканирование уязвимостей на Linux без покупки лицензии. Он требует дисциплины: актуальные фиды, ограниченный периметр, письменное разрешение и разбор отчёта человеком. Начните с одного сегмента своей сети, настройте расписание и только потом расширяйте охват. Такой подход даёт реальную картину рисков, а не груду формальных PDF.