EnglishРусский Map

vps-audit

title
vps-audit
type
toolbox
summary
Один Bash-скрипт для аудита SSH, фаервола, fail2ban, портов и SUID-файлов на Debian/Ubuntu по настраиваемым порогам PASS/WARN/FAIL
tags
bash, security, linux, sysadmin, watchlist
language
Bash
license
MIT
sources
vps-audit
created
2026-09-14
updated
2026-09-14
lang
ru
translation_of
vps-audit-script
source_updated
2026-09-14
translated
2026-09-14
translator
lllm/antigravity/gemini-3.7-flash-medium

vps-audit - это одиночный shell-скрипт от Nuver Labs, который копируют на свежий VPS, запускают от root и изучают вывод. Он проходит по фиксированному списку проверок безопасности и ресурсов, выводит каждую как [PASS], [WARN] или [FAIL] с однострочным пояснением и записывает те же результаты вместе с рекомендациями в файл vps-audit-report-<timestamp>.txt. Ничего не нужно устанавливать, скрипт не оставляет после себя никаких агентов, в чём и заключается главное удобство: он за один запуск отвечает на вопрос "не забыл ли я на этой машине что-то очевидное".

Что он проверяет

Часть, отвечающая за безопасность, покрывает стандартный список первичной настройки. В SSH скрипт проверяет sshd_config на предмет входа под root, аутентификации по паролю и стандартного порта 22. Он определяет, какой фаервол установлен (UFW, firewalld, iptables или nftables) и запущен ли Fail2ban либо CrowdSec. Скрипт подсчитывает неудачные попытки входа в /var/log/auth.log, ищет ожидающие обновления и флаг reboot-required, считает работающие службы и слушающие порты, проверяет настройку логирования sudo, считывает minlen из pwquality.conf и выводит список SUID-бинарников.

Одна проверка выделяется особо: скрипт сравнивает порт в jail'е Fail2ban для SSH с портом, который sshd слушает на самом деле. Если перенести SSH с 22 порта и забыть обновить jail, Fail2ban продолжит рапортовать об исправной работе и банить атакующих на порту, который никто не слушает. В обычной работе этот сбой остаётся незамеченным, и скрипт - хороший способ его поймать.

Часть про производительность скромнее - использование диска, памяти и CPU плюс число активных соединений - и больше напоминает строку состояния, чем аудит.

Как принимаются решения

Каждый вердикт получается сравнением числа с порогом, а сами пороги заданы обычными переменными в блоке Configuration в начале скрипта. Значения по умолчанию из README:

RESOURCE_WARN=50      # disk/memory/CPU %
RESOURCE_FAIL=80
SERVICES_WARN=20      # running services
SERVICES_FAIL=40
LOGINS_WARN=10        # failed login attempts
LOGINS_FAIL=50
OPEN_PORTS_WARN=10    # listening ports
OPEN_PORTS_FAIL=20
PASSWORD_MINLEN=12

В том же блоке настраиваются пути к проверяемым файлам (SSH_CONFIG_FILE, AUTH_LOG_FILE, FAIL2BAN_CONFIG_DIR и далее) и путь для сохранения отчёта. Параметр ENABLE_CHOWN=true передаёт владение отчётом вызвавшему sudo пользователю, а не оставляет его за root.

Такая архитектура честно показывает суть инструмента: это чек-лист с цифрами, выбранными автором на глаз. Сорок работающих служб - это FAIL для узкоспециализированного веб-сервера и норма для хоста с десятком systemd-юнитов под контейнеры. SSH на 22 порту получает WARN, хотя смена порта скорее снижает шум в логах, чем реально защищает. Стоит воспринимать вердикты как повод присмотреться и скорректировать пороги под конкретную машину, прежде чем безоговорочно верить подсветке.

Использование

curl -O https://raw.githubusercontent.com/Nuver-Labs/vps-audit/main/vps-audit.sh
chmod +x vps-audit.sh
sudo ./vps-audit.sh

В сохранённом README строки с chmod и запуском потерялись; две команды выше - их очевидное восстановление. Поскольку скрипт запускается от root, перед выполнением стоит его прочитать: он состоит из одного файла, так что много времени это не займёт.

Ограничения

  • Только Debian и Ubuntu. Пути вроде /var/log/auth.log и /var/run/reboot-required специфичны для Debian, а в списке зависимостей указан ufw, хотя проверка фаервола распознаёт также firewalld и nftables.
  • Требуются права root, поскольку большая часть проверяемых файлов доступна только суперпользователю.
  • Проверяется конфигурация, а не доступность снаружи. Количество слушающих портов ничего не говорит о том, открыты ли они во внешний мир, и скрипт не ищет известные уязвимости. В самом README прямо сказано, что утилита не заменяет профессиональный аудит.
  • Одноразовый вывод. Еженедельный запуск, предлагаемый в README, ложится на cron, а механизма diff'а между запусками нет.

Связанные страницы

Что касается блокировок, reaction предлагает более лёгкий демон в духе Fail2ban; в README среди систем предотвращения вторжений упомянуты только Fail2ban и CrowdSec. dockerscan - инструмент схожего формата, но нацеленный на образы контейнеров вместо хостов: набор проверок pass/fail с итоговым отчётом.

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

Репозиторий: nuver-labs/vps-audit, MIT. Количество звёзд не зафиксировано.