Сегодня мне было интересно, есть ли способ заставить пользователя без полномочий root иметь конкретный authorized_keys
файл (среди других разумных файлов). Я придумал это решение.
StrictModes
в sshd_config
(пришлось маневрировать с владением файлами и прочим, и sshd
с участием StrictModes
активный очень разборчивый)Запретить пользователю удалять файлы, не принадлежащие ему, в его домашнем каталоге с помощью липкого бита:
chown root:user /home/user
chmod 1770 /home/user
Каждый файл и каталог, которые не следует изменять / удалять, должны пройти через это:
chown root:user file_or_folder
chmod 0640 file_or_folder
chmod g+x folder
Пока этот подход, кажется, работает. Пользователь не может изменять / удалять файлы, и нет риска, что пользователь оставит свою домашнюю папку доступной для чтения / записи (это кажется причиной StrictModes
), потому что он не владеет своим домашним каталогом.
Возникает вопрос: я что-то упускаю? Можно ли это обойти? Есть ли недостатки?
Я бы оставил StrictModes включенным. Он предназначен для того, чтобы затруднить замену файла AuthorizedKeys другим пользователем. Возможно, вы защитили этого пользователя, но все остальные пользователи уязвимы.
Существует множество инструментов, которые можно использовать для восстановления нормальной конфигурации в случае ее поломки. Я использовал cfengine
. puppet
это популярная альтернатива. Даже если пользователь изменит свои настройки, инструмент вернет конфигурацию в нормальное состояние. При желании он может предупредить, что изменение было необходимо.
Судя по вашим требованиям, похоже, что вы защищаете учетную запись для службы. Обычно эти учетные записи не имеют пароля и не имеют учетной записи обычного пользователя. Такое требование к учетной записи обычного пользователя вызовет у меня проблемы с безопасностью. Как пользователь, я бы не согласился с такими ограничениями для своей учетной записи. Как администратор, я был бы обеспокоен тем, что учетная запись используется для целей с двумя разными профилями безопасности.
Выглядит нормально, но в Linux, вероятно, всегда есть способ обойти это, потому что, как только у вас есть учетная запись, вы повышаете свой статус. намного проще, чем взломать, если вы не доверяете своим пользователям. Если вы действительно обеспокоены, я бы предложил какую-то ограниченную или ограниченную оболочку. Они также не защищены от взлома, но, как правило, помогают в большинстве случаев.
Вы можете немного усложнить пользователю работу с файлом chattr + i, чтобы сделать его неизменяемым.