1

В качестве метода настройки мониторинга некоторых систем у меня есть скрипт, настроенный на SSH, и я запускаю некоторые основные команды оболочки, читая некоторые файлы в /proc . Я хотел бы создать конкретную учетную запись пользователя для этой задачи, и он должен иметь следующий доступ:

  • SSH
  • удар
  • Только для чтения в /proc

Другие посты упоминали rssh или Chroot, но это лучшие методы? Мне кажется, что должен быть способ создать пользователя без каких-либо разрешений и добавить только то, что нужно, усиливая мои ограничения на уровне файловой системы, а не на SSH. Это возможно?

Все системы, которые я хочу сейчас отслеживать, работают под управлением Ubuntu, но я бы не хотел ограничиваться каким-либо одним специфическим дистрибутивом.

2 ответа2

1

Во-первых, разрешения. Когда вы создаете новую учетную запись (в любом случае с adduser в системах на основе Debian - другие могут немного отличаться), вы получаете нового пользователя и новую группу с тем же именем. Вы также получаете домашний каталог для пользователя. Этот новый пользователь будет иметь права пользователя и группы на чтение / запись в своем домашнем каталоге. Они также смогут получить доступ ко всему, что обозначено как доступное для чтения, и изменить все, что доступно для чтения.

Насколько я знаю, невозможно специально исключить одного пользователя или группу из разрешений на чтение / запись в мире, используя традиционную систему разрешений POSIX. Однако вы можете включить более продвинутые ACL-списки (как и NTFS в Windows, если вы знакомы с этим), которые позволяют вам устанавливать определенные разрешения на запрет.


Альтернативный метод - настроить пользовательскую оболочку входа в систему, используя команду chsh или изменив /etc/passwd . Когда они войдут в систему, эта «оболочка» будет выполнена с вводом пользователя, перенаправленным в качестве стандартного ввода, а его стандартный вывод / ошибка перенаправлен на выход терминала. Вы можете установить эту «оболочку» в качестве любого исполняемого файла в системе, включая (но не ограничиваясь этим) вашу собственную программу на C, скрипт bash / python / perl и т.д.

Есть несколько способов сделать это. Вы можете установить оболочку входа в систему как скрипт, который просто выводит любые данные, которые вы хотите, и не требует ввода. Он просто выводит данные и выходит, закрывая сессию SSH. Это самый безопасный способ, хотя и не такой гибкий.

В качестве альтернативы, вы можете сделать так, чтобы скрипт взял некоторые данные и использовал их для определения того, что печатать. Как это сделать, зависит от вас - если вы используете скрипт bash , вы можете использовать read вместе с оператором case или серией операторов if . Тем не менее, вы должны быть осторожны, чтобы не запускать какие-либо неанимированные команды непосредственно от пользователя - и есть другие возможные проблемы с безопасностью при принятии ненадежного ввода. Например, вы можете взять processes ввода и вернуть вывод команды ps -e .

Если вы хотите, и хорошо разбираетесь в C, вы можете даже изменить сам bash , чтобы не иметь доступа к другим каталогам, но гораздо безопаснее либо не принимать ввод, либо фильтровать только определенные команды из белого списка, чем пытаться ограничить какие каталоги вы можете получить доступ. Также проще написать быстрый сценарий оболочки, чем модифицировать сложную программу на Си.

1

Чтобы обеспечить доступ только для чтения в /proc, вы можете получить доступ к клону sshfs только для чтения в /proc.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .