Можно ли заставить 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.