====== Как защитить систему от случайного отключения ======
==== Установка ====
Установить пакет Molly-Guard.
$ sudo apt install molly-guard
Она в основном отменяет следующие утилиты :''halt'' ''shutdown'' ''poweroff'' ''reboot''
// Можно также переопределить утилиты ''pm-hibernate'', ''pm-suspend'' и ''pm-suspend-hybrid'', но это потребует дополнительных операций //
Конфигурация хранится в каталоге /etc/molly-guard/.
==== Тестирование в демонстрационном режиме ====
Конфигурация по умолчанию защитит от случайных операций.
itsecforu@example:~$ sudo reboot --molly-guard-do-nothing
I: demo mode; molly-guard will not do anything due to --molly-guard-do-nothing.
W: molly-guard: SSH session detected!
Please type in hostname of the machine to reboot: example
molly-guard: would run: /lib/molly-guard/reboot
itsecforu@example:~$ sudo reboot --molly-guard-do-nothing
I: demo mode; molly-guard will not do anything due to --molly-guard-do-nothing.
W: molly-guard: SSH session detected!
Please type in hostname of the machine to reboot: x
Good thing I asked; I won't reboot example ...
W: aborting reboot due to 30-query-hostname exiting with code 1.
Осторожно, вы можете использовать более прямой подход к перезагрузке сервера.
$ ssh itsecforu@example sudo reboot --molly-guard-do-nothing
I: demo mode; molly-guard will not do anything due to --molly-guard-do-nothing.
molly-guard: would run: /lib/molly-guard/reboot
==== Создание дополнительных сообщений ====
Вы можете создавать сообщения для определенных операций и сохранить их в каталоге /etc/molly-guard/messages.d.
Определите сообщение для операции перезагрузки.
$ echo -e "\nТы чего там удумал, старый...\n" | sudo tee /etc/molly-guard/messages.d/reboot
Любая другая операция без определенного сообщения будет использовать файл по умолчанию, если он существует.
$ echo -e "\nСообщите команде DevSecOps .\n" | sudo tee /etc/molly-guard/messages.d/default
Следующие примеры иллюстрируют это поведение.
itsecforu@example:~$ sudo reboot --molly-guard-do-nothing
I: demo mode; molly-guard will not do anything due to --molly-guard-do-nothing.
Ты чего там удумал, старый...
W: molly-guard: SSH session detected!
Please type in hostname of the machine to reboot: example
molly-guard: would run: /lib/molly-guard/reboot
itsecforu@example:~$ sudo shutdown --molly-guard-do-nothing
I: demo mode; molly-guard will not do anything due to --molly-guard-do-nothing.
Сообщите команде DevSecOps
W: molly-guard: SSH session detected!
Please type in hostname of the machine to reboot: example
molly-guard: would run: /lib/molly-guard/shutdown
==== Создание дополнительных проверок ====
Требовать, чтобы stdin открывался на терминале, чтобы не позволять выполнять какие-либо из этих операций при неинтерактивном использовании SSH.
Создайте проверку 20-require-stdin в каталоге /etc/molly-guard/run.d/.
#!/bin/sh
#
# 20-require-stdin - require stdin opened on a terminal
#
set -eu
# require an interactive terminal connected to stdin
if [ ! -t 0 ]; then
echo "STDIN is not opened on a terminal; I won't $MOLLYGUARD_CMD ...">&2
exit 1
fi
Убедитесь, что к этому файлу применены надлежащие права.
В следующем примере эта проверка будет использоваться для защиты системы от случайной перезагрузки.
$ ssh ansible@example sudo reboot --molly-guard-do-nothing
I: demo mode; molly-guard will not do anything due to --molly-guard-do-nothing.
Ты чего там удумал, старый...
STDIN is not opened on a terminal; I wont reboot...
W: aborting reboot due to 20-require-stdin exiting with code 1.
ansible@example:~$ sudo reboot --molly-guard-do-nothing
I: demo mode; molly-guard will not do anything due to --molly-guard-do-nothing.
Ты чего там удумал, старый...
W: molly-guard: SSH session detected!
Please type in hostname of the machine to reboot: example
molly-guard: would run: /lib/molly-guard/reboot