Bandingkan sesi tty / pts ssh antara Unix client & server


1

Apakah mungkin untuk mendaftarkan sesi ssh dengan info tty / pts dan tanggal login dan logout pada klien? setara dengan perintah terakhir di server.

Pengguna saya menggunakan ssh proxy untuk terhubung ke server, tetapi dari server proxy mereka menggunakan akun umum untuk terhubung ke server. Saya akan membandingkan id tty / pts antara klien dan server. Di server saya menggunakan skrip ini untuk mendapatkan info ini untuk hari ini:

#!/bin/bash
today="$(date '+%a %b %e')"
last | awk -v pattern="$today" '$0 ~ pattern && /pts/ {print $0 "#line#"}'
exit 0

Terima kasih


Jika saya mengerti dengan baik klien dalam hal ini adalah server proxy. Dan Anda memiliki akses ke sana. Bisakah Anda mengonfirmasinya? (Jika demikian, Anda dapat menjalankan skrip yang sama pada klien). BTW Sepertinya saya ingin mengontrol aktivitas klien Anda karena mereka semua masuk ke akun yang sama di proxy. Jika demikian, Anda harus menanyakannya langsung. Ps & gt; selamat datang di SuperUser.
Hastur

Terima kasih, ya proxy saya adalah klien saya dan saya memiliki akses ke sana. Jika saya menjalankan skrip yang sama pada proksi (klien), saya memiliki riwayat koneksi komputer pengguna ke proksi tetapi tidak proksi ke server. Tapi mungkin saya melewatkan sesuatu. Dari komputer pengguna ke proksi mereka menggunakan akun SSH mereka sendiri tetapi dari proksi ke server, mereka menggunakan akun generik (mis: oracle).
Nicolas

Sama-sama. Sekali lagi apa pertanyaan (akhir) Anda yang sebenarnya? ;)? Jika Anda ingin mengontrol akses ke suatu program di server buat pengguna yang berbeda untuk program tersebut. Jika tidak memungkinkan buat pengguna yang berbeda di server dan izinkan mereka untuk mengubah identitas ke pengguna yang diizinkan, atau untuk menjalankan program itu sebagai pengguna itu (lihat suci sudo ). Untuk jalur yang Anda gambar, Anda harus mencocokkan kedua daftar, atau lebih baik untuk mengaktifkan ssh logging dan mencocokkan kedua daftar tersebut. Tetapi Anda tidak akan memiliki 100% kecocokan unik.
Hastur

konteksnya adalah: Saya bekerja untuk pelanggan untuk mengaudit akses pada server DB. Saya menggunakan solusi Pemantauan Aktivitas Basis Data, tetapi saya juga akan mencatat pengguna pada tingkat OS. Saat ini, pelanggan ini menggunakan proxy ssh untuk terhubung ke server DB dengan akun umum. Saya tidak bisa mengubah proses kerja mereka, saya setuju dari sudut pandang keamanan itu praktik yang sangat buruk. Pertanyaan saya yang sebenarnya adalah: Saya akan membandingkan tty / pts dari sisi klien dengan sisi server dan untuk menghubungkan cap waktu.
Nicolas

Anda punya jawaban ... Saya tidak tahu apakah Anda mau tetapi itu adalah jawaban :-)
Hastur

Jawaban:


0

Dalam beberapa kata

Gunakan log ssh pada kedua mesin: ini memberi Anda PID dari shell yang dihasilkan. Ini akan memungkinkan Anda untuk menghubungkan PID shell dengan eksekusi program dan untuk memiliki kecocokan tertentu dengan tty. Untuk audit yang lebih dalam, Anda dapat menggunakan alat audit.

Dengan kata lain

last

Dengan sederhana last Anda dapat memiliki daftar koneksi yang terkait dengan tty yang digunakan.
Anda dapat memiliki dua daftar satu dari Anda proksi mesin (saya ingin menyebutnya Gateway, GW), dan yang lain dari komputer Anda server . Perintah last secara default memberi Anda nama pengguna, pts / tty, IP / hostname. masuk tanggal Waktu, keluar tanggal Waktu. Anda dapat memodifikasi dalam format, dll. Dll.

Maka Anda harus bekerja pada overlay periode dan tebak siapa.

Masalah yang saya lihat adalah bahwa dengan cara ini Anda harus membuat alat (skrip) yang memberi Anda semua kecocokan yang memungkinkan, dan membersihkannya sementara itu Anda menemukan kecocokan yang baik. Meskipun demikian, Anda dapat memiliki situasi yang aneh.

Mari kita lakukan studi kasus. Pengguna pertama, sebut saja Nicolas, dapat masuk di GW. Lalu dia pergi untuk minum kopi atau menjawab panggilan. Sementara itu pengguna kedua, katakanlah Hastur, masuk GW dan lebih cepat dari 1 st log pengguna ke server. Pada saat ini, double log Anda rumit. Sekarang Hastur merasa perlu kopi dan log Nicolas ke server. Siapa yang akan menjadi yang pertama menyelesaikan kopi dan yang akan terhubung terlebih dahulu dengan program ini?

/var/log/auth (atau file log lain dari ssh) [ 1 ] ..

Ada file log yang digunakan untuk memantau login dan logout di setiap sistem. Cari jalur dan nama yang benar, tergantung pada sistem tersebut. Dengan

sudo grep TheUsername /var/log/auth.log

Anda akan mendapatkan garis yang mirip dengan

May  1 16:17:43 owl sshd[9024]: Accepted publickey for root from 192.168.0.101 port 37384 ssh2
May  1 16:17:43 owl sshd[9024]: pam_unix(sshd:session): session opened for user root by (uid=0)

di mana Anda memiliki waktu login yang tepat, dan bahkan PID ( [9024] ), dan IP. Kali ini Anda dapat mencocokkan data file ini dengan yang ada di last perintah untuk mengetahui tty, atau Anda dapat entah bagaimana masuk ke dalam program PID dari shell yang disebut program itu sendiri (mungkin dilakukan dengan panggilan sistem ke shell).

Mengerjakan file-file itu Anda dapat memiliki kecocokan unik untuk setiap sesi. Untuk file log analog di gateway Anda akan memiliki IP dan nama pengguna asli.

audit tools [ 2 ], [ 3 ]

Jika Anda memiliki otorisasi untuk dilakukan dan itu sah, Anda dapat menggunakan alat audit dan melakukan log penuh shell pada mesin host.

Referensi

  • [ 1 ] Mencatat upaya akses SSH
  • [ 2 ] shell / ssh / tty logger sesi
  • [ 3 ] BASH shell session logging pada host jarak jauh
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.