GNU/Linux >> Belajar Linux >  >> Linux

Cara mengatur tlog di host Linux untuk logging terminal

Pencatatan log terminal mungkin terdengar seperti sedikit pelanggaran privasi, tetapi ada banyak alasan mengapa Anda mungkin ingin mengetahui perintah apa yang dijalankan pengguna Anda. Baik untuk alasan kepatuhan atau hanya administrasi sistem yang baik, terkadang Anda hanya ingin tahu apa yang dilakukan pengguna Anda. Jika Anda mengelola armada sistem Linux dan perlu mengetahui apa yang dilakukan oleh orang-orang yang Anda percayai dengan shell, Anda mungkin ingin mempertimbangkan tlog . tlog adalah terminal I/O logger yang disertakan dengan RHEL dan beberapa distribusi lainnya. Ini mencatat lebih dari sekadar penekanan tombol; itu juga mencatat output yang diterima. Ini dapat digunakan untuk memutar ulang sesi secara harfiah.

Dalam artikel ini, saya memandu Anda melalui tlog dasar konfigurasi dan menunjukkan beberapa kekuatan yang dimilikinya. Linux cukup bagus dalam mencatat tindakan. Ini dapat, misalnya, mencatat perintah yang dijalankan melalui sudo . aman log dapat memberi tahu Anda siapa yang masuk atau gagal masuk, tetapi tidak ada yang secara terpusat mencatat setiap tindakan diambil oleh pengguna yang tidak memiliki hak istimewa. Ya, sebagian besar shell menyimpan riwayat, tetapi pengguna dapat mengubah atau bahkan menghapusnya jika mereka tahu apa yang mereka lakukan. tlog utilitas itu sendiri tidak mudah, tetapi lapisan logging tambahan tidak ada salahnya. Namun, ia memiliki keterbatasan dan kekhawatirannya, yang diuraikan oleh dokumentasi Red Hat terkait di bawah ini. Juga, tlog log in JSON sehingga dapat diurai atau bahkan diputar ulang nanti.

Tujuan saya adalah untuk menunjukkan kepada Anda kekuatan tlog bersama dengan Kokpit. Cockpit, jika Anda tidak tahu, adalah antarmuka administrasi web yang disertakan dengan RHEL. Menggunakan Cockpit adalah opsional, dan jika Anda ingin menggunakan tlog tanpa itu, itu baik-baik saja. Lewati saja langkah-langkah instruksi yang menyertakan konfigurasi Cockpit.

[ Anda mungkin juga menikmati: Menyiapkan logrotate di Linux ]

Siapkan tlog

Untuk cara ini, saya menggunakan sistem minimal RHEL 8.3 yang baru diinstal. Dokumentasi resmi Red Hat Enterprise Linux 8 tentang logging terminal dapat ditemukan di sini. Untuk memulai, yang Anda butuhkan hanyalah sistem RHEL 8 dengan langganan. Proses ini juga harus hampir sama pada CentOS 8. Instal tlog dan Cockpit lalu aktifkan perekaman sesi di sssd (Daemon Layanan Keamanan Sistem). Anda dapat menggunakan tlog dalam beberapa cara lain, tetapi pendekatan ini memungkinkan Anda mengelola tlog melalui sssd, bukan per pengguna.

Pertama, instal paket yang diperlukan:

[root@gangrif-tlogtest ~]# yum install -y tlog cockpit cockpit-session-recording

Setelah instalasi selesai, aktifkan dan mulai Cockpit:

[root@gangrif-tlogtest ~]# systemctl enable cockpit.socket --now
Created symlink /etc/systemd/system/sockets.target.wants/cockpit.socket → /usr/lib/systemd/system/cockpit.socket.

Anda dapat menguji Cockpit dengan mengarahkan browser web Anda ke https://your-server's-IP:9090 . Jika itu tidak berhasil, Anda mungkin perlu mengaktifkan Cockpit di firewall berbasis host atau berbasis jaringan. Dalam kasus saya, itu tidak perlu.

Selanjutnya, tambahkan tlog ke konfigurasi sssd. Daemon sssd memungkinkan banyak penyesuaian untuk tumpukan otentikasi Anda, termasuk hal-hal seperti direktori pengguna jarak jauh. Dalam hal ini, Anda menggunakannya untuk tlog lokal integrasi. Ada beberapa cara untuk mengatur ini. Saya akan menambahkan tlog rekaman sesi ke grup tertentu yang disebut pengguna yang mencurigakan , jadi setiap pengguna yang ditambahkan ke grup itu akan dicatat. Anda dapat mencatat pengguna individu atau semua pengguna jika Anda mau. Tambahkan konfigurasi berikut ke /etc/sssd/conf.d/sssd-session-recording.conf . Pastikan file ini dimiliki oleh root:root , dan pengguna/orang lain tidak dapat membaca atau menulis file. Sssd pilih-pilih tentang ini karena alasan yang bagus.

[root@gangrif-tlogtest ~]# cat /etc/sssd/conf.d/sssd-session-recording.conf
[session_recording]
scope = some
groups = suspicious-users

Jika Anda tidak, atau tidak bisa, menggunakan sssd, ada opsi yang secara manual mengkonfigurasi tlog untuk pengguna. Opsi ini diuraikan dalam dokumentasi yang disebutkan sebelumnya.

Setelah menempatkan file itu, restart sssd. Sekarang, uji konfigurasi.

Log sesi pengguna

gangrif . itu pengguna, dia terlihat mencurigakan. Tempatkan dia di pengguna yang mencurigakan grup yang tlog dikonfigurasi untuk merekam.

[root@gangrif-tlogtest tlog]# groupmems -g suspicious-users -a gangrif
[root@gangrif-tlogtest ~]# id gangrif
uid=1000(gangrif) gid=1000(gangrif) groups=1000(gangrif),10(wheel),1001(suspicious-users)

Saat Anda masuk sebagai gangrif , spanduk peringatan yang bagus ditampilkan yang menunjukkan bahwa Anda sedang diawasi. Spanduk ini dapat diubah atau dihapus dengan menggunakan pemberitahuan direktif di /etc/tlog/tlog-rec-session.conf . Anda mungkin diminta untuk memberi tahu pengguna bahwa mereka sedang dipantau. Bagi saya, tlog lebih kuat jika Anda tidak memberi tahu penyerang potensial bahwa mereka sedang dipantau. Memberi tahu mereka apa yang Anda miliki hanya memberi tahu mereka apa yang harus coba dinonaktifkan.

[nlager@batou-lan ~]$ ssh [email protected]
[email protected]'s password:
Web console: https://gangrif-tlogtest.tamlab.rdu2.redhat.com:9090/ or https://10.8.109.214:9090/

Last login: Tue Dec 22 15:29:44 2020 from 10.10.116.62

ATTENTION! Your session is being recorded!

[gangrif@gangrif-tlogtest ~]$

Lihat sesi di Kokpit

Secara default, tlog log ke jurnal sistem. Cara termudah untuk mendapatkan kembali data log Anda adalah dengan menggunakan sesi-logging Cock Kokpit panel. Ini sebenarnya cukup licin dan disatukan dengan baik. Anda dapat memutar ulang sesi dan melihat perintah apa yang dimasukkan, termasuk salah ketik, perintah yang diketik tetapi gagal, atau perintah yang ditutup dengan menggunakan Ctrl+C . Jika Anda menekan tampilan log tombol, penampil ini bahkan akan menunjukkan kepada Anda log sistem terkait yang diperbarui selama sesi. Ini benar-benar alat yang bagus.

Beralih dari jurnal sistem ke pencatatan file

Jika Anda tidak menggunakan Cockpit, melihat log menjadi sedikit lebih rumit, karena data yang Anda cari ada di jurnal sistem. Dalam hal ini, saya merasa paling mudah untuk hanya mengganti tlog untuk merekam ke file. Anda juga dapat masuk ke syslog, yang akan memiliki efek serupa dan mungkin lebih mudah dirawat. Demi kesederhanaan, saya hanya akan menulis langsung ke file. Saya harus memperingatkan Anda bahwa memindahkan tlog log out dari jurnal sistem dan masuk ke file merusak integrasi Cockpit.

Pertama, buat tempat untuk menyimpan file, dan pastikan dapat ditulisi oleh tlog pengguna. Saya menambahkan direktori di /var/log disebut tlog dan atur kepemilikannya ke tlog:tlog .

Selanjutnya, di /etc/tlog/tlog-rec-session.conf , beri tahu tlog tempat menyimpan lognya. Anda akan menemukan bait dalam file untuk konfigurasi yang berbeda. Satu diberi label Parameter penulis file . Parameter ini memungkinkan Anda untuk menentukan jalur untuk file output. Konfigurasi untuk jalur saya terlihat seperti ini:

    // File writer parameters
    "file": {
            // The "file" writer log file path.
            "path" : "/var/log/tlog/tlog.log"
    },

Sekarang beri tahu tlog untuk menggunakan penulis file alih-alih default, yaitu jurnal. Di bagian bawah file konfigurasi, Anda akan menemukan baris tepat sebelum penutup } yang berisi //"penulis":"jurnal" pengaturan. Ubah setelan itu menjadi file, seperti ini:

        // The type of "log writer" to use for logging. The writer needs
        // to be configured using its dedicated parameters.
        "writer" : "file"
}

Saat berikutnya pengguna target Anda masuk, file /var/log/tlog/tlog.log harus dibuat, dan sesi dicatat di sana. Anda akan ingin mengatur rotasi log ini, dan jika Anda memiliki pencatat eksternal, Anda harus mengirim file ini ke sana. Data ini hanya berguna jika tersedia saat Anda membutuhkannya. Jika penyerang menemukannya dan menghapusnya, tidak ada gunanya bagi Anda.

Lihat sesi dengan tlog-play

Setelah Anda memiliki log ini dalam file, Anda dapat melihatnya. Anda dapat menggunakan journalctl , tetapi karena log berformat JSON, log tersebut tidak mudah dibaca oleh manusia. Sebagai contoh, rm -rf saya contoh perintah dari atas terlihat seperti ini:

{"ver":"2.2","host":"gangrif-tlogtest.tamlab.rdu2.redhat.com","rec":"2a5a7ca40dd6424e91f587c0e012e623-3cf2-1f1e2d","user":"gangrif","term":"xterm-256color","session":31,"id":1,"pos":0,"timing":"=185x50+31>61+136>1+105>1+135>1+193>1+218>1+202>4+161>4+111>1+167>1+181>1+93>1+196>1+1412>2+2>166+1897>1+251>1+208>1+159>1+73>1+110>1+90>1+73>1+119>1+285>1+504>1+143>1+136>1+961>1+175>1+144>1+865>4","in_txt":"","in_bin":[],"out_txt":"\u001b]0;gangrif@gangrif-tlogtest:~\u0007[gangrif@gangrif-tlogtest ~]$ rm rf\b\u001b[K\b\u001b[K-rf /\r\nrm: it is dangerous to operate recursively on '/'\r\nrm: use --no-preserve-root to override this failsafe\r\n\u001b]0;gangrif@gangrif-tlogtest:~\u0007[gangrif@gangrif-tlogtest ~]$ mwahahaha!!!!   \b\u001b[K","out_bin":[]}

Informasinya tidak mudah dibaca, tapi untungnya ada alat yang membuatnya sederhana. Anda dapat menggunakan tlog-play dengan sesi yang direkam jurnal, dan memungkinkan Anda untuk menentukan ID rekaman untuk menghasilkan rekaman tertentu. Saat mem-parsing file, ID perekaman tidak berfungsi. Semua rekaman berakhir di file yang sama, dan Anda tidak bisa hanya memutar semuanya karena ID sesinya tidak sama. Anda harus membaginya. Anda dapat mengidentifikasi ID sesi yang ingin Anda tonton, lalu grep ID sesi itu ke dalam file baru sebelum tlog-play akan senang dengan itu. Mungkin syslog dapat dikonfigurasi untuk secara otomatis membagi file-file ini seperti yang tertulis.

[root@gangrif-tlogtest tlog]# grep 2a5a7ca40dd6424e91f587c0e012e623-3da9-1fdf38 tlog.log >> session.log
[root@gangrif-tlogtest tlog]# tlog-play -i session.log
[gangrif@gangrif-tlogtest ~]$ rm -rf /
rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafe
[gangrif@gangrif-tlogtest ~]$ logout

[root@gangrif-tlogtest tlog]#

Sesi dimainkan di layar menggunakan data waktu dari log JSON. Ini cukup licin. Anda dapat membayangkan bagaimana ini mungkin berguna saat melakukan forensik setelah pemadaman atau kompromi terdeteksi. Anda bahkan dapat menggunakan tlog untuk hal-hal seperti merekam demo sesuatu di baris perintah.

[ Dapatkan buku gratis ini dari Red Hat dan O'Reilly - Operator Kubernetes:Mengotomatiskan Platform Orkestrasi Kontainer. ] 

Menutup

Semua pembicaraan tentang pemantauan masukan pengguna Anda dapat menimbulkan beberapa pertanyaan. Seperti, apakah entri kata sandi dapat dicatat? Bagaimana dengan sesi SSH yang melompat ke host lain? Bagaimana dengan sesi X? Dokumentasi mencantumkan sesi X sebagai peringatan tetapi tlog tidak menangkap mereka. Pencatatan kata sandi dinonaktifkan secara default tetapi dapat diaktifkan, jika diperlukan.

Jadi, apakah itu untuk kepatuhan atau hanya merekam demo apik dari beberapa teknologi baru, saya harap artikel ini membantu Anda menyelesaikan pekerjaan menggunakan tlog.


Linux
  1. Cara Mengatur atau Mengubah Nama Host Sistem di Linux

  2. Cara Mengatur Variabel $Path di Linux

  3. Cara menyiapkan header dan pustaka untuk pengembangan Linux

  1. Cara Mengatur Pengaturan Proxy di baris perintah atau Terminal Linux

  2. Cara mengatur ID proses di Linux untuk program tertentu

  3. Bagaimana cara mengatur nick default untuk koneksi irssi baru?

  1. Cara mengatur printer Anda di Linux

  2. Bagaimana saya menggunakan Cockpit untuk manajemen server Linux di rumah saya

  3. Cara Mengatur Pekerjaan Cron di Linux