Как защитить продакшн сервер от rm -rf и опасных команд
Каждый DevOps-инженер и системный администратор хотя бы раз сталкивался с ситуацией, когда случайное нажатие Enter в «не том» окне терминала приводило к катастрофическим последствиям: удалению конфигурационных каталогов, обнулению баз данных или падению критических сервисов.
В этом практическом руководстве мы разберем, как встроенная система Prod Guard в Shellit защищает ваши боевые сервера на уровне PTY-потока терминала до того, как байты команды физически покинут ваше устройство.
Анатомия проблемы: почему происходят инциденты на проде
Случайные деструктивные действия возникают не из-за нехватки знаний, а из-за когнитивной перегрузки:
- Потеря контекста между вкладками: когда у инженера открыто 10 вкладок (локальный bash, staging, dev-песочница и production), легко отправить команду
rm -rf *в окно боевого сервера. - Ошибки с переменными окружения: скрипты вида
rm -rf $TARGET_DIR/при пустой или неинициализированной переменной превращаются вrm -rf /. - Опечатки в путях: пробел между слешем и точкой (
rm -rf / .configвместоrm -rf ~/.config). - Случайная вставка из буфера обмена (Paste Jacking): вставка многострочного текста, содержащего невидимый символ перевода строки
\n.
Шаг 1. Маркировка сервера тегом окружения PROD
Защита Prod Guard активируется автоматически на основе цветового тега среды в Shellit:
- Откройте карточку нужного сервера в каталоге хостов (или нажмите
Ctrl+E/Cmd+Eдля редактирования). - В поле Окружение (Environment) выберите вариант
PROD(Production). - При необходимости укажите критичность сервера (например, «Database Cluster» или «Edge Gateway»).
- Сохраните изменения.

С этого момента при любом подключении к данному серверу:
- Вкладка терминала получает ярко-красный бейдж
PROD. - Вокруг активного терминала активируется пульсирующая предупреждающая рамка безопасности.
- В строке состояния терминала отображается индикатор
[🛡️ PROD GUARD ACTIVE].
Шаг 2. Как работает перехват команд в реальном времени
В отличие от классических alias-оберток (alias rm='rm -i'), которые легко обходятся вызовом /bin/rm или сбрасываются в subshell, Prod Guard работает на уровне эмулятора терминала:
[Клавиатура оператора] │ ▼[Shellit PTY Buffer Stream] ──► (Парсинг токенов и регулярных выражений) │ ├───► Опасная команда? ──► [НЕТ] ──► Немедленная отправка в SSH сокет │ └───► [ДА!] ──► Блокировка отправки \n и вывод модального окна подтвержденияТерминальный клиент буферизирует текущую вводимую строку. Когда вы нажимаете Enter, клиент анализирует строку на наличие запрещенных паттернов. Если паттерн найден, символ \n (CRLF) не передается удаленному SSH-серверу.
Шаг 3. Список автоматически перехватываемых команд
По умолчанию Prod Guard блокирует следующие классы операций на PROD:
1. Рекурсивное удаление
rm -rf /иrm -rf /*rm -rf .иrm -rf *rm -rf --no-preserve-root
2. Форматирование и работа с блочными устройствами
mkfs,mkfs.ext4,mkfs.xfsdd if=... of=/dev/sd*илиof=/dev/nvme*fdisk,parted,wipefs
3. Разрушение баз данных в интерактивных CLI
DROP DATABASE ...;DROP TABLE ...;TRUNCATE TABLE ...;
4. Остановка критических инфраструктурных демонов
systemctl stop docker/systemctl stop containerdsystemctl stop kubeletkubeadm resetdocker system prune -a --volumes -f
Шаг 4. Реакция системы и диалог подтверждения
Когда Prod Guard обнаруживает опасную конструкцию, на экране появляется модальный экран тревоги:
- Точный текст команды: вы видите команду целиком, включая все аргументы.
- Целевой хост: указывается IP или домен сервера (например,
prod-db-master (198.51.100.10)), чтобы вы осознали контекст выполнения. - Двухфакторное подтверждение: чтобы выполнить команду, недостаточно случайно нажать
SpaceилиEnter. Требуется нажать явную кнопку «Выполнить один раз» либо ввести контрольное словоCONFIRM.
Дополнительно: Политика записи сессий «Только на PROD»
Для соблюдения стандартов безопасности (SOC 2, ISO 27001) в меню Настройки → Безопасность вы можете активировать автоматическую запись сессий в формате asciinema / raw log:
- Записывать только PROD: сессии на Dev и Staging остаются приватными, а каждая сессия на боевых серверах автоматически архивируется и подписывается в локальном зашифрованном хранилище.
- Auto-Clear Clipboard: автоматическая очистка буфера обмена через 30 секунд после копирования конфигов и паролей.