Аудит VPS за 15 минут: чеклист без Zabbix

Экспресс-проверка перед релизом, после миграции или когда «всё вроде работает, но страшно». Каждый пункт — команда и критерий «ок / не ок». Полный аудит занимает дольше, но эти 10 пунктов ловят 80% типичных проблем.

1. Версия ОС не в EOL

Ubuntu 18.04, Debian 9, CentOS 7 — без платной поддержки патчи безопасности не приходят.

cat /etc/os-release | grep -E '^(NAME|VERSION)='
uname -r
Не ок: дистрибутив без обновлений > 1 года. Планируйте миграцию до инцидента, а не после взлома.

2. Swap: есть и не забит на 100%

При нехватке RAM без swap OOM-killer убивает mysql, php-fpm или nginx без предупреждения.

free -h
swapon --show

Ок: swap настроен, использование < 70% в штатной нагрузке. Не ок: swap 100% постоянно — не хватает RAM или утечка памяти в приложении.

3. Свободное место на диске

df -hT
du -sh /var/log /var/www /tmp 2>/dev/null | sort -hr | head

Красная зона — менее 10% свободного места на / или разделе с БД. MySQL при заполнении диска может повредить таблицы.

4. Load average и CPU

uptime
top -bn1 | head -5

Load > числа ядер длительно — ищите процесс-виновника. Кратковременные пики при деплое — норма.

5. Опасные порты снаружи

ss -tuln | grep -E ':(22|3306|5432|6379|9200|27017)\s'

MySQL, Redis, Elasticsearch не должны слушать 0.0.0.0 без firewall. SSH лучше на нестандартном порту + fail2ban или ключи без пароля.

6. Лимиты PHP и воркеры

php -r "echo 'memory_limit=' . ini_get('memory_limit') . PHP_EOL;"
grep -E '^(pm\.|memory_limit)' /etc/php/*/fpm/pool.d/www.conf 2>/dev/null

memory_limit = -1 — один тяжёлый скрипт может положить весь сервер. Для Bitrix обычно 256–512M на воркер.

7. SSL: срок и цепочка

echo | openssl s_client -connect ваш-домен.ru:443 -servername ваш-домен.ru 2>/dev/null | openssl x509 -noout -dates

Алерт за 14–30 дней до истечения. Самоподписанный сертификат на проде — не ок.

8. Cron и агенты работают

crontab -l
systemctl list-timers --all | head
grep CRON /var/log/syslog 2>/dev/null | tail -3

Бэкапы, очистка логов, агент мониторинга — всё через cron. «Забытый» cron после миграции — классика.

9. Бэкап проверяли восстановлением

Файл .sql.gz на диске ≠ рабочий бэкап. Вопрос: когда последний раз поднимали копию на тестовом стенде?

Совет: раз в квартал — тестовое восстановление одной БД и одного каталога upload. Запишите время в runbook.

10. Есть мониторинг, а не «узнаю от клиента»

Минимум: доступность сайта, SSL, диск и RAM на сервере. Ручной чек раз в неделю не масштабируется на 5+ серверов.

Mediops: агент по cron на VDS, проверки URL/SSL для сайтов, алерты в Telegram или MAX — бесплатный тариф: 1 VDS и 3 сайта.

Подключите первый сервер

Агент за 2 минуты, метрики в кабинете, алерты до звонка клиента.