Apakah mungkin untuk membuat OpenSSH untuk mencatat kunci publik yang digunakan dalam otentikasi?

27

Saya memiliki sistem produksi di mana beberapa orang yang berbeda diizinkan untuk masuk ke satu akun - akun itu untuk aplikasi dan bukan untuk orang tersebut karena kami tidak memiliki akun pribadi di server produksi.

Untuk keperluan audit, saya ingin mengetahui siapa yang masuk pada jam berapa, dan saat kami menggunakan kunci SSH untuk masuk, masuk akal untuk melacaknya (karena tidak ada pengenal lain untuk dilacak).

Ketika SSH mengautentikasi pengguna, itu mencatat nama pengguna ke log keamanan sistem, tetapi SSH tidak mencatat kunci publik resmi mana yang digunakan dalam login. Apakah mungkin untuk mendapatkan OpenSSH juga melaporkan kunci publik mana yang digunakan, atau mungkin hanya komentar yang terkait dengan kunci itu?

Sistem operasi yang digunakan adalah CentOS 5.6, tetapi saya juga ingin mendengarnya jika dimungkinkan pada sistem operasi lain.

Guss
sumber

Jawaban:

33

Jika Anda menaikkan LogLevel ke VERBOSE di / etc / sshd / sshd_config, itu akan mencatat sidik jari kunci publik yang digunakan untuk mengautentikasi pengguna.

LogLevel VERBOSE

maka Anda mendapatkan pesan seperti ini

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

Anda dapat gunakan

 ssh-keygen -lf /path/to/public_key_file

untuk mendapatkan sidik jari dari kunci publik tertentu.

Iain
sumber
2
Terima kasih! Saya perlu mengkonfirmasi sidik jari kunci terhadap authorized_keysfile tersebut, jadi saya membuat skrip kecil ini untuk mencetak sidik jari kunci yang diotorisasi:(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
Saya perhatikan bahwa SSH sekarang mencatat kunci dua kali untuk setiap login - tahu mengapa dan / atau bagaimana cara membuatnya sekali?
Guss
Ya, itu level detail yang tidak saya kenal. Bisakah Anda menghentikannya, mungkin bukan tanpa mencari-cari kode sumber.
user9517 mendukung GoFundMonica
2
Utas ini terlihat relevan. Ia menemukan kunci yang cocok dua kali: sekali untuk menentukan apakah kunci itu dapat diterima atau tidak, maka kedua kalinya untuk memeriksa tanda tangan yang disediakan klien.
mpontillo
3

Jika orang-orang Anda menggunakan ssh-agent, Anda bisa memasukkan ini ke .bashrc Anda:

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
Willem
sumber
Ide yang bagus, sayangnya salah satu alasan saya ingin mencatat ini adalah karena saya menggunakan perintah Authorized_keys untuk pengguna yang ingin saya masuki, dan mereka biasanya tidak mendapatkan bash shell.
Guss
0

Coba mainkan dengan LogLevelparameter dalam sshd_config. Untuk detail, lihat man sshd_config

Sven
sumber
0

Posting blog yang bagus menjawab pertanyaan Anda: http://www.screenage.de/blog/2012/02/10/how-to-log-history-and-logins-from-multiple-ssh-keys-under-one- akun pengguna dengan boneka /

yaronf
sumber
3
Selamat Datang di Kesalahan Server! Secara umum kami menyukai jawaban di situs untuk dapat berdiri sendiri - Tautan bagus, tetapi jika tautan itu putus, jawabannya harus memiliki informasi yang cukup untuk tetap membantu. Silakan pertimbangkan untuk mengedit jawaban Anda untuk memasukkan lebih detail. Lihat FAQ untuk info lebih lanjut.
slm