Назад | Перейти на главную страницу

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

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

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

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

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

Если вы повысите уровень 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