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


27

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

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

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

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

Ответы:


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

Хорошая идея, к сожалению, одна из причин, по которой я хочу войти в систему, заключается в том, что я использую авторизованные команды для пользователей, которых я хочу регистрировать, и они обычно не получают оболочку bash.
Guss

0

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


0

3
Добро пожаловать в сбой сервера! Как правило, нам нравятся ответы на сайте, чтобы они могли стоять сами по себе - Ссылки - это здорово, но если эта ссылка когда-либо сломается, в ответе должно быть достаточно информации, чтобы она была полезна. Пожалуйста, рассмотрите возможность редактирования своего ответа, чтобы включить больше деталей. Смотрите FAQ для получения дополнительной информации.
SLM
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.