file log dalam CentOS 7 [ditutup]

8

Di CentOS 7, bagaimana saya bisa menemukan dan melihat semua log sistem yang memberi tahu saya siapa yang mencoba masuk ke sistem, siapa yang masuk, proses apa yang mereka hubungi, apa yang mereka capai, dll. Saya ingin dapat menghubungkan setiap aktivitas dengan salah satu userid atau alamat IP jarak jauh.

var/log/Direktori saya mengandung banyak sumber termasuk /var/log/messagesdan /var/log/secure, tetapi sebagian besar file bertipe Binary (application/octet-stream)dan OS tidak tahu cara membukanya kecuali saya mengaitkan beberapa program tampilan yang tidak dikenal dengannya. Juga, var/log/firewalldsepertinya tidak mengandung informasi yang berguna.

Saya dapat menemukan semua log yang dihasilkan oleh aplikasi saya, database saya, dan NginX / Apache.

CodeMed
sumber
Ok, Anda menemukan /var/logdan semuanya adalah Binari? Kamu yakin? Bagaimana kabarmu?
Braiam
@Braiam Saya tidak mengatakan mereka semua adalah binari. Saya mengatakan sebagian besar dari mereka adalah binari. Misalnya, /var/log/firewalldadalah file teks yang tampaknya berisi informasi yang tidak berguna. Saya memeriksa dengan mengklik file di GUI. Pertama mengklik kiri untuk mencoba membuka, lalu mengklik kanan untuk melihat properti untuk memeriksa jenis file.
CodeMed
Sistem tidak melakukan ini secara default. Anda harus mengaktifkan pendataan audit untuk mendapatkan ini. Saya menunjukkan banyak metode dalam A ini: unix.stackexchange.com/questions/75051/… . Ada ikhtisar auditd yang baik di sini: security.blogoverflow.com/2013/01/… . Cari yang lain, ada banyak.
slm
@slm Saya membaca tautan Anda. Terima kasih. Ini akan menjadi server web. Saya perlu melacak identitas setiap individu yang menyentuh dengan cara apa pun catatan dalam database atau file apa pun di bagian tertentu dari sistem file. Saya juga perlu menggunakan data logging ini untuk mengatur peringatan yang memecat kapan saja pengguna yang tidak sah mengakses data apa pun. Saya tahu cara melakukan pencatatan tingkat aplikasi dan basis data. Saya ingin mengatur pencatatan agar log CentOS dapat ditautkan ke log penampung web, log aplikasi, dan log basis data, mungkin oleh ip. Bagaimana saya harus membingkai pertanyaan tentang level CentOS dari persyaratan ini?
CodeMed
@ CodeMed - Saya akan menyatakan bahwa itu CentOS 7, sama seperti yang Anda miliki. Saya pikir Anda dapat melakukan apa yang Anda inginkan menggunakan auditd, wrt manipulasi filesystem dan perintah / proses apa yang dipanggil oleh pengguna pada filesystem lokal. Ini tidak akan menampilkan apa pun di luar pengguna nginx, apache, dll. melakukan X meskipun dari level aplikasi. Anda mungkin perlu menggabungkan keduanya. Saya juga akan membingkainya sebagai systemd Q, dengan CentOS 7 sebagai contoh spesifik.
slm

Jawaban:

10

Utilitas (commandline) yang harus Anda gunakan adalah journalctl. Misalnya untuk melihat output dmesg:

journalctl --dmesg

atau entri yang dapat diuraikan yang berkaitan dengan firewall:

journalctl --output=json-pretty UNIT=firewalld.service

Untuk daftar UNIT yang dapat dipilih, gunakan alat yang biasa:

journalctl --output=json-pretty | grep -F UNIT | sort -u

Lihat man journalctlpada sistem Anda untuk opsi lebih lanjut untuk membatasi dan menentukan output.

Anthon
sumber
Terima kasih. Ini awal. Tetapi pertanyaan saya lebih global. Bagaimana cara saya mendapatkan daftar semua log yang tersedia? Dan bagaimana cara mendapatkan output ke format yang bisa saya gunakan? Misalnya, sumber daya yang dapat diimpor ke program java yang dilacak ke pengguna atau ip. journalcdt --dmesgtampaknya tidak mengidentifikasi siapa pun yang lebih spesifik daripada localhost.localdoman, dan journalctl --firewalldmenghasilkan unrecognized option. Jadi saran Anda belum menjawab pertanyaan saya.
CodeMed
Anda harus benar-benar melihat halaman manual. Ini sangat infromatif. journalctl --output=json-pretty UNIT=firewalld.servicememberi Anda output json.
Anthon
Terima kasih atas pembaruannya. Saya memang membaca manual, tetapi jawaban Anda dapat membuatnya lebih mudah untuk diterapkan. Saat ini, journalctl --output=json-pretty | grep -f UNIT | sort -umemberikangrep: UNIT: No such file or directory
CodeMed
Juga, journalctl --output=json-pretty UNIT=firewalld.servicehanya berfungsi ketika saya login sebagai root, tetapi tidak ketika saya mencoba menggunakan terminal sebagai pengguna normal. Jadi saya belum bisa menggunakan kode ini secara terprogram. Jika saya entah bagaimana dapat secara otomatis membuat satu set file log baru untuk setiap unit yang dapat dipilih tanpa harus meninggalkan kata sandi root saya dalam file yang dapat diretas, maka pertanyaan ini akan dijawab.
CodeMed
@ KodeMed Ada kesalahan ketik dalam grepargumen (saya tidak memotong dan menempel dan menurunkan -Fopsi).
Anthon