Чи можна змусити 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-агент, ви можете помістити це у свій .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

Це гарна ідея, на жаль, одна з причин, за якими я хочу увійти до цього, полягає в тому, що я використовую команди авторизованих ключів для користувачів, які я хочу ввійти, і вони, як правило, не отримують баш-оболонку.
Guss

0

Спробуйте пограти з LogLevelпараметром в sshd_config. Детальніше див man sshd_config


0

Гарне повідомлення в блозі відповідає на ваше запитання: http://www.screenage.de/blog/2012/02/10/how-to-log-history-and-logins-from-multiple-ssh-keys-under-one- user-account-with-puppet /


3
Ласкаво просимо до помилки сервера! Як правило, нам подобаються відповіді на сайті, щоб мати можливість самостійно стояти - Посилання чудові, але якщо це посилання коли-небудь перерветься, відповідь повинна мати достатньо інформації, щоб вона все-таки була корисною. Будь ласка, подумайте про редагування своєї відповіді, щоб включити більше деталей. Див. Поширені запитання для отримання додаткової інформації.
slm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.