Cara Membuat Server Log Terpusat dengan Rsyslog di CentOS/RHEL 7


Agar administrator sistem dapat mengidentifikasi atau memecahkan masalah pada sistem server CentOS 7 atau RHEL 7, ia harus mengetahui dan melihat peristiwa yang terjadi pada sistem secara spesifik jangka waktu tertentu dari file log yang disimpan dalam sistem di direktori /var/log.

Server syslog pada mesin Linux dapat bertindak sebagai titik pemantauan pusat melalui jaringan tempat semua server, perangkat jaringan, router, switch, dan sebagian besar layanan internalnya yang menghasilkan log, baik yang terkait dengan masalah internal tertentu atau sekadar pesan informatif dapat mengirimkan lognya .

Pada sistem CentOS/RHEL 7Rsyslog daemon adalah server log utama yang sudah diinstal sebelumnya, diikuti oleh Systemd Journal Daemon (jurnal).

Server Rsyslog dibuat sebagai layanan arsitektur klien/server dan dapat mencapai kedua peran secara bersamaan. Ini dapat dijalankan sebagai server dan mengumpulkan semua log yang dikirimkan oleh perangkat lain di jaringan atau dapat dijalankan sebagai klien dengan mengirimkan semua peristiwa sistem internal yang dicatat ke server syslog titik akhir jarak jauh.

Ketika rsyslog dikonfigurasi sebagai klien, log dapat disimpan secara lokal dalam file di sistem file lokal atau dapat dikirim dari jarak jauh daripada menuliskannya dalam file yang disimpan di mesin atau menulis file log peristiwa secara lokal dan mengirimkannya ke server syslog jarak jauh di waktu yang sama.

Server Syslog mengoperasikan pesan log apa pun menggunakan skema berikut:

type (facility).priority (severity)  destination(where to send the log)

A. Data fasilitas atau jenis diwakili oleh proses sistem internal yang menghasilkan pesan. Di Linux, proses internal (fasilitas) yang menghasilkan log distandarisasi sebagai berikut:

  • auth = pesan yang dihasilkan oleh proses autentikasi (login).
  • cron= pesan yang dihasilkan oleh proses terjadwal (crontab).
  • daemon = pesan yang dihasilkan oleh daemon (layanan internal).
  • kernel = pesan yang dihasilkan oleh Kernel Linux itu sendiri.
  • mail = pesan yang dihasilkan oleh server email.
  • syslog = pesan yang dihasilkan oleh daemon rsyslog itu sendiri.
  • lpr = pesan yang dihasilkan oleh printer lokal atau server cetak.
  • local0 – local7 = pesan khusus yang ditentukan oleh administrator (local7 biasanya ditetapkan untuk Cisco atau Windows).

B. Tingkat prioritas (keparahan) juga distandarisasi. Setiap prioritas diberikan dengan singkatan standar dan nomor seperti yang dijelaskan di bawah ini. Prioritas ke 7 adalah tingkat yang lebih tinggi dari semuanya.

  • emerg = Darurat – 0
  • peringatan = Peringatan – 1
  • err = Kesalahan – 3
  • peringatkan = Peringatan – 4
  • pemberitahuan = Pemberitahuan – 5
  • info = Informasi – 6
  • debug = Men-debug – 7

Kata kunci Rsyslog khusus:

  • *=semua fasilitas atau prioritas
  • tidak ada=fasilitas tidak memiliki prioritas tertentu Misalnya: mail.none

C. Bagian ketiga untuk skema syslog diwakili oleh direktif destination. Daemon Rsyslog dapat mengirimkan pesan log untuk ditulis dalam file pada sistem file lokal (kebanyakan dalam file di direktori /var/log/) atau untuk disalurkan ke proses lokal lain atau untuk dikirim ke konsol pengguna lokal (ke stdout), atau mengirim pesan ke server syslog jarak jauh melalui protokol TCP/UDP, atau bahkan membuang pesan ke /dev/null.

Untuk Mengonfigurasi CentOS/RHEL 7 sebagai Server Log pusat, pertama-tama kita perlu memeriksa dan memastikan bahwa partisi /var tempat semua file log dicatat cukup besar ( minimal beberapa GB) agar dapat menyimpan semua file log yang akan dikirim oleh perangkat lain. Sebaiknya gunakan drive terpisah (LVM, RAID) untuk memasang direktori /var/log/.

Persyaratan

  1. Prosedur Instalasi CentOS 7.3
  2. RHEL 7.3 Prosedur Instalasi

Cara Mengonfigurasi Rsyslog di Server CentOS/RHEL 7

1. Secara default, layanan Rsyslog diinstal secara otomatis dan seharusnya berjalan di CentOS/RHEL 7. Untuk memeriksa apakah daemon dijalankan di sistem, jalankan perintah berikut dengan hak akses root.

systemctl status rsyslog.service

Jika layanan tidak berjalan secara default, jalankan perintah di bawah ini untuk memulai daemon rsyslog.

systemctl start rsyslog.service

2. Jika paket rsyslog tidak diinstal pada sistem yang ingin Anda gunakan sebagai server logging terpusat, jalankan perintah berikut untuk menginstal paket rsyslog.

yum install rsyslog

3. Langkah pertama yang perlu kita lakukan pada sistem untuk mengonfigurasi daemon rsyslog sebagai server log terpusat, sehingga dapat menerima pesan log untuk klien eksternal, adalah membuka dan mengedit, menggunakan editor teks favorit, file konfigurasi utama dari /etc/rsyslog.conf, seperti disajikan dalam kutipan di bawah ini.

vi /etc/rsyslog.conf

Dalam file konfigurasi utama rsyslog, cari dan hapus komentar pada baris berikut (hapus tanda hashtag # di awal baris) untuk menyediakan penerimaan transport UDP ke server Rsyslog melalui 514 pelabuhan. UDP adalah protokol standar yang digunakan untuk transmisi log oleh Rsyslog.

$ModLoad imudp 
$UDPServerRun 514

4. Protokol UDP tidak memiliki overhead TCP, yang membuatnya lebih cepat dalam transmisi data dibandingkan protokol TCP. Di sisi lain, protokol UDP tidak menjamin keandalan data yang dikirimkan.

Namun, jika Anda perlu menggunakan protokol TCP untuk penerimaan log, Anda harus mencari dan menghapus komentar pada baris berikut dari file /etc/rsyslog.conf untuk mengkonfigurasi daemon Rsyslog untuk mengikat dan mendengarkan soket TCP di 514 pelabuhan. Soket mendengarkan TCP dan UDP untuk penerimaan dapat dikonfigurasi pada server Rsyslog secara bersamaan.

$ModLoad imtcp 
$InputTCPServerRun 514 

5. Pada langkah selanjutnya, jangan tutup file dulu, buat template baru yang akan digunakan untuk menerima pesan jarak jauh. Templat ini akan menginstruksikan server Rsyslog lokal tempat menyimpan pesan yang diterima yang dikirim oleh klien jaringan syslog. Template harus ditambahkan sebelum awal blok GLOBAL DIRECTIVES seperti yang diilustrasikan dalam kutipan di bawah ini.

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
. ?RemoteLogs & ~

Perintah $template RemoteLogs di atas memerintahkan daemon Rsyslog untuk mengumpulkan dan menulis semua pesan log yang diterima ke file berbeda, berdasarkan nama mesin klien dan fasilitas klien jarak jauh (aplikasi) yang menghasilkan pesan berdasarkan properti yang ditentukan ada dalam konfigurasi templat: %HOSTNAME% dan %PROGRAMNAME%.

Semua file log ini akan ditulis ke sistem file lokal ke file khusus yang diberi nama sesuai nama host mesin klien dan disimpan di direktori /var/log/.

Aturan pengalihan & ~ menginstruksikan server Rsyslog lokal untuk berhenti memproses pesan log yang diterima lebih lanjut dan membuang pesan tersebut (tidak menuliskannya ke file log internal).

Nama RemoteLogs adalah nama arbitrer yang diberikan pada arahan templat ini. Anda dapat menggunakan nama apa pun yang menurut Anda paling cocok untuk template Anda.

Untuk menulis semua pesan yang diterima dari klien dalam satu file log yang diberi nama sesuai Alamat IP klien jarak jauh, tanpa memfilter fasilitas yang menghasilkan pesan, gunakan kutipan di bawah ini.

$template FromIp,"/var/log/%FROMHOST-IP%.log" 
. ?FromIp & ~ 

Contoh lain dari templat yang semua pesan dengan tanda fasilitas autentikasi akan dicatat ke templat bernama “TmplAuth“.

$template TmplAuth, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
authpriv.*   ?TmplAuth

Di bawah ini adalah kutipan dari definisi templat dari server Rsyslog 7:

template(name="TmplMsg" type="string"
         string="/var/log/remote/msg/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log"
        )

Kutipan template di atas juga dapat ditulis sebagai:

template(name="TmplMsg" type="list") {
    constant(value="/var/log/remote/msg/")
    property(name="hostname")
    constant(value="/")
    property(name="programname" SecurePath="replace")
    constant(value=".log")
    }

Untuk menulis templat Rsyslog yang kompleks, baca manual file konfigurasi Rsyslog dengan mengeluarkan perintah man rsyslog.conf atau lihat dokumentasi online Rsyslog.

6. Setelah Anda mengedit file konfigurasi Rsyslog dengan pengaturan Anda sendiri seperti dijelaskan di atas, restart daemon Rsyslog untuk menerapkan perubahan dengan mengeluarkan perintah berikut:

service rsyslog restart

7. Saat ini, server Rsyslog harus dikonfigurasi untuk bertindak sebagai server log terpusat dan merekam pesan dari klien syslog. Untuk memverifikasi soket jaringan Rsyslog, jalankan perintah netstat dengan hak akses root dan gunakan grep untuk memfilter string rsyslog.

netstat -tulpn | grep rsyslog 

8. Jika Anda mengaktifkan SELinux di CentOS/RHEL 7, jalankan perintah berikut untuk mengonfigurasi SELinux agar mengizinkan lalu lintas rsyslog bergantung pada jenis soket jaringan.

semanage -a -t syslogd_port_t -p udp 514
semanage -a -t syslogd_port_t -p tcp 514 

9. Jika firewall diaktifkan dan aktif, jalankan perintah di bawah ini untuk menambahkan aturan yang diperlukan untuk membuka port rsyslog di Firewalld.

firewall-cmd --permanent --add-port=514/tcp
firewall-cmd --permanent --add-port=514/udp
firewall-cmd –reload

Itu saja! Rsyslog sekarang dikonfigurasi dalam mode server dan dapat memusatkan log dari klien jarak jauh. Pada artikel selanjutnya, kita akan melihat cara mengkonfigurasi klien Rsyslog di server CentOS/RHEL 7.

Dengan menggunakan server Rsyslog sebagai titik pemantauan pusat untuk pesan log jarak jauh, Anda dapat memeriksa file log dan mengamati status kesehatan klien atau men-debug masalah klien dengan lebih mudah ketika sistem mogok atau sedang diserang.