Как связать только один открытый ключ с ограниченной оболочкой как scponly?

Это - соображение безопасности. Это ограничивает ущерб, который может быть нанесен кем-то, кто врывается в приложение демона. Пользовательское приложение обычно принадлежит стандартному идентификатору пользователя такой как root.

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

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

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

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

3
14.11.2012, 10:23
1 ответ

Можно использовать command ключевое слово в authorized_keys для ограничения выполнения одной единственной командой для конкретного ключа, как это:

command="/usr/local/bin/mysync" ...sync public key... 

Обновление: при определении простого сценария как команды, можно проверить пользователя команды, первоначально предоставленного:

#!/bin/sh 

case "$SSH_ORIGINAL_COMMAND" in 
/path/to/unison *) 
$SSH_ORIGINAL_COMMAND 
;; 
*) 
echo "Rejected" 
;; 
esac 
5
27.01.2020, 21:17
  • 1
    Это просто не выполняет ту команду? Я хотел бы, чтобы sshd только позволил a ssh server -c unison ... в то время как любая другая попытка соединиться с тем ключом не должна выполнять почти простое соединение мусора –  Tobias Kienzler 14.11.2012, 10:32
  • 2
    Это возможно, я обновил ответ. Но что причина такого поведения? Если у Вас есть ключ, у Вас есть разрешение синхронизировать. Таким образом, Вы скорее соединяете и делаете задание или не соединяетесь вообще... –  Andrey Voitenkov 14.11.2012, 11:13
  • 3
    Прекрасный, я использовал case "$(basename $SSH_ORIGINAL_COMMAND)" in \n unison *) все же. Причина, я хочу иметь закрытый ключ, который не требует пароля, таким образом, унисон может работать необслуживаемый (например, как cronjob), в то время как тот ключ не должен быть способен к предоставлению доступа SSH. Конечно, унисоном можно было злоупотребить для замены authorized_keys... –  Tobias Kienzler 14.11.2012, 11:28

Теги

Похожие вопросы