LINUX.ORG.RU

Использование чужого $SSH_AUTH_SOCK

 


0

2

Есть некоторый хост, я и другой пользователь ходит туда под рутом, авторизуясь ssh-ключами, используемыми через ssh-agent. Соответственнго, появляются два сокета вида /tmp/ssh-XXXXX/agent.num, ведущие к моему агенту и к его. На права пофиг, оба root, оба можем всё. Сможет ли за счёт подмены SSH_AUTH_SOCK он логинится на другой хост с моим ключом или я с его?

★★★

Последнее исправление: selivan (всего исправлений: 1)

Вроде как сможет. Во всяком случае, утверждается, что root может использовать ssh-agent любого другого пользователя.

В общем: If you can't trust the root user, you're in trouble.

mky ★★★★★
()
Ответ на: комментарий от mky

Надо будет попробовать. Блин, как страшно жить-то оказывается.

selivan ★★★
() автор топика

1. unshare -m

2. mount -n -t tmpfs /tmp

3. Profit?

+- правильные параметры: идея сделать namespace для fs, и private mount в нем. (Я не уверен сможет ли другой рут процесс через /dev/mapper подцепиться)

UPD. Пример: http://blog.endpoint.com/2012/01/linux-unshare-m-for-per-process-private.html...

qnikst ★★★★★
()
Последнее исправление: qnikst (всего исправлений: 2)
Ответ на: комментарий от qnikst

Полезная штука. То есть в любом случае рут на той системе сможет использовать ssh-agent, но тут вместо простого объявления переменной ему придётся каким-то хитрым способов выдирать сокет из privste namespace. Ну и плюс это не впи сывается в стандартный способ работы с ssh-agent: придётся заходить с пустым, но уже запущенным агентом, потом перемещать сокет в private namespace, и только потом добавлять в агент ключи. Иначе злой сосед по серверу может успеть ими воспользоваться.

ИМХО более безопасно это было бы так: что-то пытается использовать ssh-agent, на localhost он спрашивает подтверждение этого действия,
и только после этого отдаёт информацию.

selivan ★★★
() автор топика
Ответ на: комментарий от selivan

ИМХО более безопасно это было бы так: что-то пытается использовать ssh-agent, на localhost он спрашивает подтверждение этого действия, и только после этого отдаёт информацию.

https://bugzilla.mindrot.org/show_bug.cgi?id=1499 ;)

djm@ давно уже так считает. только вот не запилил пока почему-то, надо будет напомнить ему.

val-amart ★★★★★
()
Ответ на: комментарий от val-amart

А общение ssh с ssh-агентом защищёно от replay-атак? А то всё равно не полная защита получится: злой сосед подслушивает обмен между ssh-агентом и ssh, соединяющимся с другим хостом, потом воспроизводит - и может коннектится к тому же хосту.

selivan ★★★
() автор топика
Ответ на: комментарий от selivan

То есть в любом случае рут на той системе сможет использовать ssh-agent, но тут вместо простого объявления переменной ему придётся каким-то хитрым способов выдирать сокет из privste namespace.

ну если парсинг памяти ядра является рассматривается, то да. Но я подозреваю, что тогда не существует безопасных способов использования ssh-agent.

Ну и плюс это не впи сывается в стандартный способ работы с ssh-agent:

а какой стандартный?

Вообще, создание приватного tmp можно в PAM воткнуть, так что все будет автоматом - едиственный минус - тебе в каждой сессии придётся свой агент держать.

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

ОК, на своих хостах можно по-всякому безопасность накрутить.

Но если заходишь на чужой хост, используя ssh-agent, и ForwardAgent включен - печаль тебе.

selivan ★★★
() автор топика
Ответ на: комментарий от selivan

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

val-amart ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.