Можно ли заставить OpenSSH регистрировать открытый ключ, который использовался при аутентификации?

27

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

Для целей аудита я хочу иметь возможность сказать, кто вошел в систему в какое время, и, поскольку мы используем ключи SSH для входа в систему, кажется логичным отслеживать это (так как нет другого идентификатора для отслеживания).

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

Используемая операционная система - CentOS 5.6, но я также хотел бы услышать, возможно ли это в других операционных системах.

Guss
источник

Ответы:

33

Если вы повысите LogLevel до VERBOSE в / etc / sshd / sshd_config, он запишет отпечаток открытого ключа, использованного для аутентификации пользователя.

LogLevel VERBOSE

тогда вы получаете такие сообщения

Jul 19 11:23:13 centos sshd[13431]: Connection from 192.168.1.104 port 63529
Jul 19 11:23:13 centos sshd[13431]: Found matching RSA key: 54:a2:0a:cf:85:ef:89:96:3c:a8:93:c7:a1:30:c2:8b
Jul 19 11:23:13 centos sshd[13432]: Postponed publickey for user from 192.168.1.104 port 63529 ssh2
Jul 19 11:23:13 centos sshd[13431]: Found matching RSA key: 54:a2:0a:cf:85:ef:89:96:3c:a8:93:c7:a1:30:c2:8b
Jul 19 11:23:13 centos sshd[13431]: Accepted publickey for user from 192.168.1.104 port 63529 ssh2

Вы можете использовать

 ssh-keygen -lf /path/to/public_key_file

чтобы получить отпечаток определенного открытого ключа.

иан
источник
2
Благодарность! Мне нужно подтвердить отпечатки клавиш на authorized_keysфайле, поэтому я сделал этот небольшой скрипт для распечатки отпечатков авторизованных ключей:(p="$(mktemp)";cat ~/.ssh/authorized_keys|while IFS="$(printf "\n")" read key; do echo $key > $p; ssh-keygen -lf $p; done; rm -f $p)
Guss
Я заметил, что теперь SSH регистрирует ключ дважды для каждого входа в систему - какая-либо идея, почему и / или как заставить его регистрировать его один раз?
Гусс
Да, это уровень детализации, с которым я не знаком. Можете ли вы остановить это, вероятно, не без возни с исходным кодом.
user9517 поддерживает GoFundMonica
2
Эта тема выглядит актуальной. Он находит соответствующий ключ дважды: один раз, чтобы определить, является ли ключ приемлемым или нет, затем второй раз, чтобы проверить подпись, которую предоставляет клиент.
mpontillo
3

Если ваши люди используют ssh-agent, вы можете поместить это в ваш .bashrc:

SSH_KEY_NAME=$(ssh-add -L | cut -d' ' -f 3 || 'unknown')
if [[ ! $SSH_KEY_NAME ]]; then SSH_KEY_NAME="no agent"; fi
echo `/bin/date` $SSH_KEY_NAME >> ~/.login.log
Willem
источник
Хорошая идея, к сожалению, одна из причин, по которой я хочу войти в систему, заключается в том, что я использую авторизованные команды для пользователей, которых я хочу регистрировать, и они обычно не получают оболочку bash.
Guss
0

Попробуйте поиграть с LogLevel параметром в sshd_config. Подробнее см. В man sshd_config

Свен
источник
0

Хороший пост в блоге отвечает на ваш вопрос: http://www.screenage.de/blog/2012/02/10/how-to-log-history-and-logins-from-multiple-ssh-keys-under-one- пользовательский счет-с куклой /

yaronf
источник
3
Добро пожаловать в сбой сервера! Как правило, нам нравятся ответы на сайте, чтобы они могли стоять сами по себе - Ссылки - это здорово, но если эта ссылка когда-либо сломается, в ответе должно быть достаточно информации, чтобы она была полезна. Пожалуйста, рассмотрите возможность редактирования своего ответа, чтобы включить больше деталей. Смотрите FAQ для получения дополнительной информации.
SLM