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