Perintah log dijalankan melalui ssh

8

Saya ingin mencatat semua perintah yang dijalankan melalui SSH.

Mengatakan,

ssh something@server.com COMMAND

Saya ingin masuk "PERINTAH" di server.com

Saya melakukan pencarian secara ekstensif tetapi tidak dapat menemukan apa pun.

Ada satu lagi pertanyaan serupa tetapi saya tidak berpikir ada solusi di sana.

Cara mencatat "eksekusi jarak jauh melalui SSH"

Saya bisa mendapatkan tampilan langsung dengan

pstree -p | grep ssh

Saya memang mencoba Snoopy, auditd, dan sudosh tetapi tidak bisa mencatat perintah-perintah itu melalui ssh.

Ada http://freecode.com/projects/shwatchr . tetapi saya tidak dapat mengunduh skrip untuk diuji.

apakah ada cara lain untuk menyelesaikan ini?

Terima kasih.........

Prashanth
sumber

Jawaban:

4

Alih-alih berfokus pada SSH, mundur selangkah dan pertimbangkan untuk menggunakan auditd. Saya berasumsi bahwa yang Anda inginkan adalah melacak pengguna, bukan melacak apa yang dilakukan dari SSH dibandingkan dengan jenis login lainnya.

man auditctl harus memberi Anda titik awal.

Jenny D
sumber
Petunjuk yang bagus, tetapi bagi saya terlalu abstrak. Bagaimana cara menggunakan auditctlperintah ssh?
guettli
3

saya melakukan tes menggunakan opsi ini di server suse server saya dan itu berhasil, tapi mungkin ada cara yang lebih baik.

ForceCommand logger -p user.notice "$SSH_ORIGINAL_COMMAND"
c4f4t0r
sumber
Ini mencatat perintah yang dikirim tetapi tidak menjalankannya di sistem jarak jauh.
Michael McGarrah
1

Saya telah menemukan cara untuk melakukan ini. Ada skrip perl yang ditulis oleh John M. Simpson ( https://www.jms1.net/ ).

Yang harus Anda lakukan adalah menambahkan

command="#{path to log-session}"

sebelum setiap kunci di ~ / .ssh / otor_keys Anda

Ini hanya berfungsi jika Anda memiliki ssh tanpa kata sandi, tetapi ini tidak menyelesaikan tujuan saya sampai batas tertentu.

http://www.jms1.net/log-session

Prashanth
sumber
1

Dalam kasus saya, saya memiliki persyaratan yang sama persis. Satu-satunya peringatan dengan metode ini adalah bahwa saya tidak yakin bagaimana membuatnya bekerja jika Anda tidak menggunakan kunci ssh. Saya membuat skrip bash pendek untuk mencatat perintah sebelum menjalankannya:

#!/bin/bash
echo "$(date -Is) ${SSH_ORIGINAL_COMMAND}" >> ~/sshcommands.log
sh "${SSH_ORIGINAL_COMMAND}"

Saya menyimpan perintah ini ke ~ / bin / log-commands lalu membuatnya dapat dieksekusi ( chmod +x ~/bin/log-commands).

Dalam file Authorized_key, saya menambahkan command=parameter ke baris milik kunci SSH yang saya inginkan memiliki log, sehingga akan dipaksa untuk menjalankan skrip log-perintah:

command = "/ home / tricky / bin / log-commands" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ ...... 6J0C1 [email protected]

Jika seseorang mengetahui tentang pencatatan tetapi tidak ingin Anda melihat perintah, mereka dapat langsung pergi ke sesi interaktif. Seperti yang Anda sebutkan, Anda sudah mencoba snoopy, yang akan melakukannya untuk Anda. Alternatif populer yang belum saya coba adalah rootsh, sudosh, dan sesi-pengguna-log.

zTricky
sumber