Как защитить сервер прода от себя
Чтобы не стать героем байки про "как я случайно удалил базу на проде", вот несколько способов, которые помогут избежать человеческого фактора при ручных действиях:
- Приветственное сообщение при входе на сервер - первое, что бросается в глаза и сразу даёт понять, где вы находитесь
\\bash echo -e " \033[41m\033[5mWARNING\033[m \033[1;34mThis is a production server\033[m " \\
- Настройка PS1 (prompt string) с подсветкой окружения и имени хоста:
\\bash PS1=“\@ \[\033[38;5;196m\]PROD\[$(tput sgr0)\]\n[\[$(tput sgr0)\]\[\033[38;5;75m\]\u\[$(tput sgr0)\]@\[$(tput sgr0)\]\[\033[38;5;196m\]\h\[$(tput sgr0)\] \W]\\$ \[$(tput sgr0)\]” \\
В своей практике я применяю данные методы, размещая необходимые настройки в системном каталоге /etc/profile.d/ или пользовательских файлах .profile для Debian и .bash_profile для Red Hat дистрибутивов при отсутствии прав на запись в /etc ;).
Дополнительные предохранители:
- sudo с паролем - отсутствие NOPASSWD в sudoers на проде заставит задуматься перед выполнением команды - Подтверждение sudo команд - функция-обёртка, которая запрашивает подтверждение перед каждым вызовом sudo
\\bash sudo() { read -rp "⚠️ WARNING: Running a command with superuser privileges! Continue? (y/N): " response case “$response” in [yY][eE][sS]|[yY]) command sudo “$@” ;; *) echo “The execution of the command has been canceled.” return 1 ;; esac } \\
Поделитесь своим опытом: какие меры защиты от случайных команд на продакшене вы считаете наиболее эффективными?