Setiap pengguna baru yang terhubung menghasilkan sshd
sesi baru dengan PID tertentu. Anda bisa menggunakan pstree
untuk mencetak perintah mana yang diwarisi dari sshd
sesi mana , dan kemudian periksa silang PID ini /var/log/auth.log
.
Contoh (dianonimkan): Saya masuk ke server jauh dengan 3 sesi simultan, dengan pengguna jarak jauh yang sama. Saya sekarang ingin mencari tahu dari IP mana klien datang yang menjalankan perintah watch date
.
$ pstree -p | grep watch
| |-sshd(15243)---sshd(15342)---bash(15343)---watch(15450)
$ sudo grep 15243 /var/log/auth.log
Mar 7 15:37:29 XXXXXXXXXX sshd[15243]: Accepted publickey for XXXXXXXXXX from 12.34.56.78 port 48218 ssh2
Mar 7 15:37:29 XXXXXXXXXX sshd[15243]: pam_unix(sshd:session): session opened for user XXXXXXXXXX by (uid=0)
Mar 7 15:37:44 XXXXXXXXXX sudo: XXXXXXXXXX : TTY=pts/7 ; PWD=/home/XXXXXXXXXX ; USER=root ; COMMAND=/bin/grep 15243 /var/log/auth.log
pstree -p
menunjukkan bahwa watch
perintah diwarisi dari sshd
dengan PID 15243. grep
ing untuk PID ini di /var/auth/auth.log
menunjukkan bahwa itu adalah IP 12.34.56.78 yang memulai sesi ini. Karena itu, ini juga pengguna yang memulai watch
.
Adapun untuk menemukan history
secara khusus pengguna ini, itu tidak dapat dilakukan dari apa yang dapat saya lihat ketika semua pengguna jarak jauh menggunakan pengguna SSH lokal yang sama. Juga, itu dapat dengan mudah dipalsukan / tidak diaktifkan / dll, jadi itu tidak benar-benar dapat diandalkan. Jika disimpan ke file histori, maka Anda bisa mencari cp
perintah dan melihat kebelakang dalam file, tetapi jika tidak ada, maka tidak ada banyak yang harus dilakukan.
grep: /var/log/auth.log: No such file or directory
:-(/var/log/secure
./var/log/auth.log.1
, dll., Ada, maka cobalah untuk melihat apakah mereka mengandung info tersebut. Setelah itu, restartrsyslog
(sudo service rsyslog restart
) dan lihat apakah itu mulai mengisiauth.log
, yang seharusnya sudah dilakukan. SSHD log ke/var/log/auth.log
secara default di Ubuntu , jadi kecuali Anda telah secara eksplisit mengubah target logging melalui/etc/ssh/ssd_config
atau/etc/syslog.conf
(Anda dapat memeriksa ke fileauth
level mana login di sini), itu harus ada di sana. Jika tidak: ada sesuatu :-).Anda bisa menambahkan dua baris ini ke / etc / profile atau / etc / bashrc untuk mencatat semua perintah yang dijalankan oleh bash:
Ini akan menggunakan syslog untuk merekam setiap perintah yang dieksekusi bersama dengan pengguna yang melakukannya dan itu alamat IP dalam format seperti ini:
Selain itu Anda dapat menambahkan baris di bawah ini ke konfigurasi syslog Anda (/etc/syslog.conf) untuk mengarahkan ulang pesan local3 ke file tertentu.
sumber
syslog-ng
sebagai perbaikan dan file konfigurasi/etc/syslog-ng/syslog-ng.conf
.Anda bisa menggunakan snoopy untuk ini.
Anda harus mengonfigurasinya untuk mencatat variabel lingkungan khusus (SSH_CLIENT) dengan menentukan IP =% {env: SSH_CLIENT} dalam definisi format pesan log (./configure flag atau dapat dikonfigurasi di snoopy.ini sejak versi 2.x).
Pengungkapan: Snoopy maintainer di sini.
sumber
Dengan asumsi bahwa Anda menggunakan bash,
history
hanya akan menunjukkan kepada Anda riwayat baris perintah ANDA . Secara default, ini membaca~/.bash_history
untuk histori. Perhatikan bahwa ini dapat diubah (meskipun sangat tidak mungkin) dengan melakukan sesuatu sepertiHISTFILE=/home/userFoo/.my_alt_history
.Dengan asumsi bahwa Anda melakukan root pada kotak, Anda dapat memindai semua direktori pengguna dan membaca histori mereka untuk melihat siapa yang menjalankan perintah itu.
sumber
ps -aux | grep "cp file1.sh file2.sh"