Cara Mengelola Log Sistem (Konfigurasi, Putar, dan Impor Ke Database) di RHEL 7 - Bagian 5


Untuk menjaga keamanan sistem RHEL 7 Anda, Anda perlu mengetahui cara memantau semua aktivitas yang terjadi pada sistem tersebut dengan memeriksa file log. Dengan demikian, Anda akan dapat mendeteksi aktivitas yang tidak biasa atau berpotensi berbahaya dan melakukan pemecahan masalah sistem atau mengambil tindakan lain yang sesuai.

Di RHEL 7, daemon rsyslogd bertanggung jawab atas pencatatan sistem dan membaca konfigurasinya dari /etc/rsyslog.conf (file ini menentukan lokasi default untuk semua log sistem) dan dari file di dalam /etc/rsyslog.d, jika ada.

Konfigurasi Rsyslogd

Pemeriksaan cepat terhadap rsyslog.conf akan membantu untuk memulai. File ini dibagi menjadi 3 bagian utama: Modul (karena rsyslog mengikuti desain modular), arahan Global (digunakan untuk mengatur properti global daemon rsyslogd), dan Aturan. Seperti yang mungkin bisa Anda tebak, bagian terakhir ini menunjukkan apa yang dicatat atau ditampilkan (juga dikenal sebagai pemilih) dan di mana, dan akan menjadi fokus kami sepanjang artikel ini.

Baris tipikal di rsyslog.conf adalah sebagai berikut:

Pada gambar di atas, kita dapat melihat bahwa pemilih terdiri dari satu atau lebih pasangan Fasilitas:Prioritas yang dipisahkan dengan titik koma, dimana Fasilitas menjelaskan jenis pesannya (lihat bagian 4.1.1 di RFC 3164 untuk melihat daftar lengkap fasilitas yang tersedia untuk rsyslog) dan Prioritas menunjukkan tingkat keparahannya, yang dapat berupa salah satu dari kata-kata yang cukup jelas berikut ini:

  1. men-debug
  2. info
  3. melihat
  4. peringatan
  5. berbuat salah
  6. kritik
  7. peringatan
  8. muncul

Meski bukan prioritas, kata kunci tidak ada berarti tidak ada prioritas sama sekali atas fasilitas yang diberikan.

Catatan: Prioritas yang diberikan menunjukkan bahwa semua pesan dengan prioritas tersebut dan di atasnya harus dicatat dalam log. Jadi, baris pada contoh di atas memerintahkan daemon rsyslogd untuk mencatat semua pesan dengan info prioritas atau lebih tinggi (apa pun fasilitasnya) kecuali pesan milik mail, authpriv, dan layanan cron (pesan yang datang dari fasilitas ini tidak akan diperhitungkan) ke /var/log/messages.

Anda juga dapat mengelompokkan beberapa fasilitas menggunakan tanda titik dua untuk menerapkan prioritas yang sama pada semuanya. Jadi, barisnya:

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

Dapat ditulis ulang menjadi

*.info;mail,authpriv,cron.none                /var/log/messages

Dengan kata lain, fasilitas mail, authpriv, dan cron dikelompokkan dan kata kunci none diterapkan pada tiga di antaranya.

Membuat file log khusus

Untuk mencatat semua pesan daemon ke /var/log/tecmint.log, kita perlu menambahkan baris berikut di rsyslog.conf atau di file terpisah (lebih mudah dikelola ) di dalam /etc/rsyslog.d:

daemon.*    /var/log/tecmint.log

Mari kita mulai ulang daemonnya (perhatikan bahwa nama layanan tidak diakhiri dengan d):

systemctl restart rsyslog

Dan periksa isi log khusus kami sebelum dan sesudah memulai ulang dua daemon acak:

Sebagai latihan belajar mandiri, saya sarankan Anda bermain-main dengan fasilitas dan prioritas dan mencatat pesan tambahan ke file log yang ada atau membuat yang baru seperti pada contoh sebelumnya.

Memutar Log menggunakan Logrotate

Untuk mencegah file log bertambah tanpa henti, utilitas logrotate digunakan untuk memutar, mengompresi, menghapus, dan sebagai alternatif mengirimkan log, sehingga memudahkan administrasi sistem yang menghasilkan file log dalam jumlah besar.

Bacaan yang Disarankan: Cara Mengatur dan Mengelola Rotasi Log Menggunakan Logrotate di Linux

Logrotate berjalan setiap hari sebagai tugas cron (/etc/cron.daily/logrotate) dan membaca konfigurasinya dari /etc/logrotate .conf dan dari file yang terletak di /etc/logrotate.d, jika ada.

Seperti halnya rsyslog, meskipun Anda dapat menyertakan pengaturan untuk layanan tertentu dalam file utama, membuat file konfigurasi terpisah untuk masing-masing layanan akan membantu mengatur pengaturan Anda dengan lebih baik.

Mari kita lihat logrotate.conf yang umum:

Dalam contoh di atas, logrotate akan melakukan tindakan berikut untuk /var/loh/wtmp: mencoba memutar hanya sebulan sekali, tetapi hanya jika file setidaknya berukuran < berukuran kuat>1 MB, lalu buat file log baru dengan izin yang ditetapkan ke 0664 dan kepemilikan diberikan kepada root pengguna dan grup utmp. Selanjutnya, hanya simpan satu log yang diarsipkan, seperti yang ditentukan oleh arahan rotasi:

Sekarang mari kita perhatikan contoh lain seperti yang ditemukan di /etc/logrotate.d/httpd:

Anda dapat membaca lebih lanjut tentang pengaturan logrotate di halaman manualnya (man logrotate dan man logrotate.conf). Kedua file disediakan bersama artikel ini dalam format PDF untuk kenyamanan membaca Anda.

Sebagai insinyur sistem, Anda bebas memutuskan berapa lama log akan disimpan dan dalam format apa, bergantung pada apakah Anda memiliki /var di partisi terpisah /< volume logis. Jika tidak, Anda sebaiknya mempertimbangkan untuk menghapus log lama untuk menghemat ruang penyimpanan. Di sisi lain, Anda mungkin terpaksa menyimpan beberapa log untuk audit keamanan di masa mendatang sesuai dengan kebijakan internal perusahaan atau klien Anda.

Menyimpan Log ke Database

Tentu saja memeriksa log (bahkan dengan bantuan alat seperti grep dan ekspresi reguler) bisa menjadi tugas yang membosankan. Oleh karena itu, rsyslog memungkinkan kami mengekspornya ke database (RDBMS yang didukung OTB mencakup MySQL, MariaDB, PostgreSQL, dan Oracle.

Bagian tutorial ini mengasumsikan bahwa Anda telah menginstal server dan klien MariaDB di kotak RHEL 7 yang sama tempat log dikelola:

yum update && yum install mariadb mariadb-server mariadb-client rsyslog-mysql
systemctl enable mariadb && systemctl start mariadb

Kemudian gunakan utilitas mysql_secure_installation untuk mengatur kata sandi untuk pengguna root dan pertimbangan keamanan lainnya:

Catatan: Jika Anda tidak ingin menggunakan pengguna root MariaDB untuk menyisipkan pesan log ke database, Anda dapat mengonfigurasi akun pengguna lain untuk melakukannya. Penjelasan cara melakukan hal tersebut berada di luar cakupan tutorial ini tetapi dijelaskan secara rinci di basis pengetahuan MariaDB. Dalam tutorial ini kita akan menggunakan akun root untuk kesederhanaan.

Selanjutnya, unduh skrip createDB.sql dari GitHub dan impor ke server database Anda:

mysql -u root -p < createDB.sql

Terakhir, tambahkan baris berikut ke /etc/rsyslog.conf:

$ModLoad ommysql
$ActionOmmysqlServerPort 3306
*.* :ommysql:localhost,Syslog,root,YourPasswordHere

Mulai ulang rsyslog dan server database:

systemctl restart rsyslog 
systemctl restart mariadb

Mengkueri Log menggunakan sintaksis SQL

Sekarang lakukan beberapa tugas yang akan mengubah log (seperti menghentikan dan memulai layanan, misalnya), lalu masuk ke server DB Anda dan gunakan perintah SQL standar untuk menampilkan dan mencari di log:

USE Syslog;
SELECT ReceivedAt, Message FROM SystemEvents;

Ringkasan

Pada artikel ini kami telah menjelaskan cara mengatur pencatatan sistem, cara merotasi log, dan cara mengarahkan pesan ke database untuk memudahkan pencarian. Kami berharap keterampilan ini akan berguna saat Anda mempersiapkan ujian RHCE dan juga dalam tanggung jawab Anda sehari-hari.

Seperti biasa, masukan Anda sangat kami harapkan. Jangan ragu untuk menggunakan formulir di bawah ini untuk menghubungi kami.