= Сообщение: 4436 из 8555 ========================================= RU.LINUX = От : Eugene Grosbein 2:5006/1 12 Aug 17 20:49:55 Кому : Vladimir Bobarykin 12 Aug 17 20:49:55 Тема : Re: Linux запрет выключения/перезагрузки FGHI : area://RU.LINUX?msgid=grosbein.net+6d96d900 На : area://RU.LINUX?msgid=2:5034/13.1+592dfda8 = Кодировка сообщения определена как: IBM866 ================================= ============================================================================== 31 мая 2017, среда, в 01:07 NOVT, Vladimir Bobarykin написал(а):
VB> Вот, аналогия - например забыл пароль рутовый - стандартно грузишься в сингле VB> во фряхе, или в емерженси в той же центоси, подмонтируешь раздел, меняешь пароль VB> рута.
root как линуксе, так и в FreeBSD это суперпользователь. Если немного подумать, ты хочешь ограничить всемогущество суперпользователя. Это вполне возможно и к тому есть несколько разных подходов. Если сильно не вдаваться в подход OpenVMS, где вообще убрали суперпользователя и для супер-критичных вещей может требоваться одновременное присутствие нескольких людей, каждый из которых должен ввести известный только ему пароль, временно образуя такого "коллегиального" суперюзера на данный момент, то и самого (удаленного) суперюзера можно ограничить "слегка".
Hапример: процедура ребута первым делом проверяет, а не включен ли повышенный режим безопасности (тупо переменная в ядре) и если да - просто ничего не начинает. Процедура изменения режима безопасности позволяет его только усиливать и без ребута понизить уровень можно ТОЛЬКО через ядерный отладчик, доступный с консоли (пока пропустим момент про удалённую консоль через физический KVM или его эмуляцию посредством IPMI и проч.): войти в отладчик и поменять значение переменной работающего ядра, выйти из отладчика и продолжить работу системы. А если отладчика в ядре нет, то понизить уровень безопасности без ребута нельзя вообще никак.
Процедура динамической подгрузки кода в ядро (ядерных модулей) перестаёт работать, если включен высокий уровень безопасности. Открытие /dev/mem или его аналогов безусловно запрещено, если уровень высокий (но в качестве исключения доверенный код может открыть /dev/mem до повышения уровня и держать открытый handle даже после повышения уровня).
При загрузке системы по дефолту уровень стандартный, при нём загружаются все нужные модули, затем система повышает себе уровень, затем начинается настройка сетевых интерфейсов и запуск сетевых сервисов.
В итоге подключившийся удаленно root не может изменить код ядра и не может заставить ядро перезагрузиться, хотя и может поменять софт/настройки так, чтобы после ребута убрать этот запрет.
И без ребута можно понизить уровень безопасности с консоли, что разблокирует ребут.
Hу и ещё процедура обработки паники ядра вместо ребута должна вызывать особую процедуру, сущность которой сильно зависит от истинных целей всей этой фигни и включает в себя остановку системы вместо перезагрузки.
Eugene -- Поэты - страшные люди. У них все святое. --- slrn/1.0.2 (FreeBSD) * Origin: RDTC JSC (2:5006/1@fidonet)