Я хотел бы иметь корневую учетную запись в безопасности, даже если мой непривилегированный пользователь скомпрометирован.
В Ubuntu по умолчанию вы можете использовать sudo только по соображениям безопасности. Однако я не уверен, что это безопаснее, чем просто использовать логин на консоли в текстовом режиме. Есть слишком много вещей, которые могут пойти не так, если злоумышленник может выполнить код как мой обычный пользователь. Например, добавление псевдонимов, добавление материала в мой PATH, настройка клавиатурных шпионов LD_PRELOAD и X11 - это лишь некоторые из них. Единственное преимущество, которое я вижу, это тайм-аут, поэтому я никогда не забываю выйти из системы.
У меня такие же сомнения в отношении su, но у него даже нет ограничения по времени. Некоторые операции (особенно перенаправление ввода-вывода) более удобны с su, но с точки зрения безопасности это кажется хуже.
Вход в консоль в текстовом режиме кажется наиболее безопасным. Поскольку он запускается init, если злоумышленник может контролировать PATH или LD_PRELOAD, он уже является пользователем root. События нажатия клавиш не могут быть перехвачены программами, работающими на X. Я не знаю, могут ли программы, работающие на X, перехватывать [ctrl] + [alt] + [f1] (и открывать полноэкранное окно, которое выглядит как консоль) или это безопасно, как [Ctrl] + [Alt] + [Del] в Windows. Кроме того, единственная проблема, которую я вижу, это отсутствие тайм-аута.
Так я что-то упустил? Почему ребята из Ubuntu решили разрешить только sudo? Что я могу сделать, чтобы улучшить безопасность любого из методов?
Как насчет SSH? Традиционно root не может войти через SSH. Но использование вышеупомянутой логики не будет самым безопасным:
- разрешить рут через SSH
- переключиться в текстовый режим
- войдите как root
- SSH к другой машине
- войти в систему как root?