Назад | Перейти на главную страницу

Отключение всех команд по SSH

Предположим, что пользователь может подключиться к серверу по ssh и не может выполнить FTP и подключиться к другим источникам, загрузить вирус и запустить его.

Можно ли заставить пользователя выполнять только некоторые известные команды?

из man sshd_config:

ForceCommand

Принудительно выполняет команду, указанную ForceCommand, игнорируя любую команду, предоставленную клиентом и ~ / .ssh / rc, если он присутствует. Команда вызывается с помощью оболочки входа пользователя с параметром -c. Это относится к выполнению оболочки, команды или подсистемы. Это наиболее полезно внутри блока Match. Команда, изначально предоставленная клиентом, доступна в переменной среды SSH_ORIGINAL_COMMAND. Указание команды «internal-sftp» приведет к принудительному использованию внутрипроцессного sftp-сервера, который не требует файлов поддержки при использовании с ChrootDirectory.

это позволяет вам использовать оболочку-оболочку, которая позволяет делать только определенные вещи. один пример rssh.

Если вам нужно это ограничение только для определенных пользователей, используйте command=cmd вариант в known_hosts файл (задокументирован в man sshd)

Один из способов, хотя и не идеальный, заключался бы в создании отдельного раздела для домашних каталогов пользователей в любых местах, к которым у них есть доступ для записи. Просто смонтируйте эти разделы noexec.

Правильная настройка разрешений файловой системы обычно очень эффективна для ограничения возможного ущерба.

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

Возможно, вам может помочь настройка chroot-окружения для ваших пользователей. Видеть Как я могу использовать chroot ssh-соединения?