Может ли злонамеренный пользователь обойти принудительную команду ssh authorized_keys?
Использование Linux и Openssh:
Пользователь может подключиться с помощью ssh к серверу, на котором его ключ находится в списке авторизованных ключей. Его открытому ключу предшествует command="command..."
который заставляет выполнить определенную команду (не оболочку):
command="/path/to/somescript...",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-user-rc ssh-rsa AAAff...................
- Есть ли способ, которым пользователь может обойти эту команду?
- Что насчет sftp? Работает ли sftp при использовании принудительной команды (которая не является оболочкой)?
3 ответа
Если в разрешенный набор команд входит демон sftp (или internal-sftp), то SFTP будет разрешен. Однако, если вы устанавливаете принудительную команду в файле авторизованных ключах, и у пользователя был доступ sftp, без дополнительной работы он мог бы заменить файл тем, который не ограничен тем, что вы определяете. Это, конечно, будет работать с любым приложением, которое пользователь может дать указание изменить этот файл (преднамеренно или путем его обмана). Лучшим вариантом может быть ограничение по пользователю или группе в основном sshd_config, возможно, с помощью ChrootDirectory.
Наиболее распространенная угроза исходит от того, что они могут использовать команду, способную делать то, о чем администратор не думал. Например, CVS и SVN позволяют запускать сценарии до / после принятия. Если пользователь может изменить скрипт пост-фиксации, он может запускать свои собственные команды.
Вы можете установить атрибут с помощью chattr в папке.ssh и в файле author_keys после того, как внесете необходимые записи в файл author_keys, так что никто не сможет внести какие-либо изменения или даже перезаписать папку.ssh или даже авторизованные ключи файл.
Вы можете сделать рекурсивный чаттр:
chattr -R +i .ssh