Files
2026-07-31 12:40:04 +03:00

83 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Модель безопасности
Цель проекта — выполнять повторяемое обслуживание Ubuntu/Debian с минимальным
риском. «Безопасно» не означает «невозможно сломать»: любое системное обновление
может содержать ошибку пакета, несовместимость приложения или service restart.
## Принципы
### Без удаления пакетов
Основное обновление использует `apt-get upgrade --no-remove`.
`dist-upgrade` и `full-upgrade` не используются.
`autoremove` выключен. Причина: пакет, нужный локальному приложению, иногда
ошибочно остается помеченным как автоматически установленный.
### Без автоматического reboot
Новое ядро устанавливается, но активируется только после решения администратора.
Это предотвращает незапланированный разрыв VPN, базы данных, SSH или другого
сервиса.
### Без опасной очистки файлов
Очистка временных данных делегируется `systemd-tmpfiles`, `logrotate`,
`journalctl` и APT. Проект не содержит рекурсивного удаления широких каталогов.
### Без очистки Docker по умолчанию
Stopped containers, tagged images, volumes и networks могут содержать нужное
состояние. Поэтому Docker cleanup выключен. Опция удаляет только dangling images.
### Сохранение конфигов
`Dpkg::Options::=--force-confold` сохраняет установленную локальную конфигурацию.
Новая версия файла пакета обычно остается рядом как `.dpkg-dist`; ее нужно
сравнить вручную.
### Проверки до изменения
APT upgrade не запускается при:
- поврежденном/незавершенном состоянии `dpkg`;
- критически малом свободном месте;
- ошибке `apt-get update`.
### Один процесс
`flock` предотвращает параллельные maintenance-запуски. APT-lock ожидается до
10 минут, что уменьшает конфликт с `apt-daily`.
## Рекомендуемая эксплуатация
1. Создайте snapshot VM перед первым запуском.
2. Проверьте installer и checksum.
3. Запустите на тестовой VM.
4. Проверьте journal, failed units и приложение.
5. Только потом развертывайте на остальные серверы.
6. Перезагружайте сервер в согласованное maintenance window.
## Что проверить после запуска
```bash
systemctl --failed
dpkg --audit
apt list --upgradable
journalctl -u safe-monthly-maintenance.service -n 200
test -e /var/run/reboot-required && echo "reboot required"
```
Для VPN, reverse proxy, базы данных и других сервисов добавьте собственные
health checks после системного обслуживания.
## Rollback
Проект сохраняет список пакетов, но не создает полноценный rollback.
Для надежного возврата нужны:
- snapshot гипервизора/VPS-провайдера;
- резервная копия `/etc` и данных приложений;
- отдельно проверенная процедура восстановления.