Можно ли заставить OpenSSH регистрировать открытый ключ, который использовался при аутентификации?
У меня есть производственная система, в которой нескольким людям разрешено входить в одну учетную запись - учетная запись предназначена для приложения, а не для пользователя, поскольку у нас нет личных учетных записей на производственных серверах.
Для целей аудита я хочу иметь возможность сказать, кто вошел в какое время, и, поскольку мы используем ключи SSH для входа в систему, кажется логичным отслеживать это (так как нет другого идентификатора для отслеживания).
Когда SSH аутентифицирует пользователя, он записывает имя пользователя в системный журнал безопасности, но не регистрирует, какой из авторизованных открытых ключей был использован при входе в систему. Можно ли заставить OpenSSH также сообщать, какой открытый ключ был использован, или просто комментарий, связанный с этим ключом?
Используемая операционная система - CentOS 5.6, но я также хотел бы услышать, возможно ли это в других операционных системах.
4 ответа
Если вы поднимите 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
чтобы получить отпечаток определенного открытого ключа.
Если ваши люди используют 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
Попробуйте поиграть с LogLevel
параметр в sshd_config
, Подробнее см. В man sshd_config
Хороший пост в блоге отвечает на ваш вопрос: http://www.screenage.de/blog/2012/02/10/how-to-log-history-and-logins-from-multiple-ssh-keys-under-one-user-account-with-puppet/