Konfigurasi Syslog Server Menggunakan Rsyslog

Jumat, 25 Desember 2020

Konfigurasi Syslog Server Menggunakan Rsyslog. Karena suatu kebutuhan, biasanya sysadmin akan membuat satu server khusus yang bertugas untuk mengumpulkan log dari server lain tempat aplikasi berada. Dengan centralized log seperti ini maka proses analisa log akan menjadi lebih simple.

Untuk keperluan syslog server ini sebenarnya ada banyak tool gratis yang bisa digunakan, yang populer ada rsyslog dan syslog-ng. Syslog-ng memiliki fitur lebih banyak dan konfigurasi yang lebih kompleks, namun untuk kebutuhan pengumpulan log default saya pikir rsyslog sudah cukup. Nah, di tutorial ini kita akan membahas konfigurasi centralized log server menggunakan rsyslog.

Untuk contoh di tutorial ini, saya menggunakan Ubuntu 18.04 sebagai Syslog Server, dan juga satu mesin Ubuntu 18.04 sebagai client.

Konfigurasi di Syslog Server

Update repository dan install ryslog. Paketnya sudah tersedia di repository.

sudo apt update && sudo apt install rsyslog -y

Konfigurasi utama rsyslog ada di /etc/rsyslog.conf. Kalian bisa langsung menambahkan konfigurasi disitu, namun karena file ini juga membaca file konfigurasi dari /etc/rsyslog.d/, saya lebih suka membuat file konfigurasi baru disana.

sudo nano /etc/rsyslog.d/linuxsec.conf

Untuk nama filenya terserah. Namun pastikan filenya berada di /etc/rsyslog.d/ dan berekstensi .conf.

Rsyslog bisa berjalan di protokol TCP dan UDP. Kalian bisa menggunakan salahsatunya, atau langsung gunakan keduanya. Maka tambahkan baris berikut:

$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514

514 adalah port default yang digunakan oleh rsyslog. Kalian bisa ubah sendiri sesuai kebutuhan.

Berikutnya adalah menentukan alamat IP, subnet, ataupun domain yang bisa mengirim ke server syslog. Contoh formatnya:

$AllowedSender TCP, 127.0.0.1, 192.168.0.0/24, *.domain.com, sub1.domain.net
$AllowedSender UDP, 127.0.0.1, 192.168.0.0/24, *.domain.com, sub1.domain.net

Selanjutnya, agar lognya rapi, kita perlu menambahkan template rsyslog agar lognya dipisah pisah berdasarkan aplikasi yang berjalan di client.

$template remote-incoming-logs,"/var/log/rsyslog/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?remote-incoming-logs
& ~

maka berikut adalah isi lengkap dari file /etc/rsyslog.d/linuxsec.conf sekarang.

$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514

$AllowedSender TCP, 127.0.0.1, 192.168.0.0/24, *.domain.com, sub1.domain.net
$AllowedSender UDP, 127.0.0.1, 192.168.0.0/24, *.domain.com, sub1.domain.net

$template remote-incoming-logs,"/var/log/rsyslog/%HOSTNAME%/%PROGRAMNAME%.log" 
*.* ?remote-incoming-logs
& ~

Simpan file tersebut. Terakhir kita pastikan konfigurasi yang kita atur diatas sudah benar. Jalankan perintah

rsyslogd -f /etc/rsyslog.conf -N1

Jika sudah oke, ada satu file lagi yang harus diedit. Jika di Ubuntu, file tersebut berada di /etc/rsyslog.d/50-default.conf.

sudo nano /etc/rsyslog.d/50-default.conf

Nah, di file ini kita bisa mengatur log mana saja yang ingin diproses dan mana yang ingin diabaikan. Misalnya secara default user.log di rsyslog tidak diaktifkan, dan kita ingin mengaktifkannya maka tinggal hapus comment (tanda pagar) didepannya.

Jika sudah oke, restart dan enable ryslog.

sudo systemctl enable rsyslog
sudo systemctl restart rsyslog

Selanjutnya adalah membuka port 514 jika kalian mengaktifkan UFW di Ubuntu.

sudo ufw allow 514/udp
sudo ufw allow 514/tcp

Selanjutnya verifikasi apakah rsyslog sudah berjalan di port 514.

netstat -4altunp | grep 514

Jika sudah, maka konfigurasi diatas sudah benar semua. Jika belum, cek lagi barangkali ada yang salah.

Oke, konfigurasi di sisi server sudah selesai. Sekarang kita konfigurasi di client.

Konfigurasi di Syslog Client

Syslog client ini nantinya yang bertugas mengirim log ke server syslog yang sudah kita sediakan diatas.

Install rsyslog terlebih dahulu.

sudo apt update && sudo apt install rsyslog -y

Konfigurasi di sisi client relatif lebih mudah.

sudo nano /etc/rsyslog.d/linuxsec-client.conf

Lalu tambahkan baris berikut:

#Send log over UDP
*.* @syslog.linuxsec.org:514

#Send log over TCP
*.* @@syslog.linuxsec.org:514

#Set disk queue
$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1

Untuk domainnya sendiri bisa juga langsung ditembak ke alamat IP, misalnya 192.168.1.2:514. Sesuaikan saja host dan portnya.

Sekarang restart dan enable service rsyslog.

sudo systemctl enable rsyslog
sudo systemctl restart rsyslog

Logging HTTP Log

Secara default, http access log, misalnya Nginx, tidak ikut dikirim oleh rsyslog. Namun kalian bisa mengaktifkannya. Kebetulan untuk bersi Nginx 1.7.1 keatas sudah support logging ke syslog. Cukup tambahkan baris berikut di serverblock Nginxnya:

access_log syslog:server=syslog.linuxsec.org:514,facility=local7,tag=nginx,severity=info;
error_log syslog:server=syslog.linuxsec.org:514,facility=local7,tag=nginx_error,severity=warn;

Perbedaan tag diatas agar template rsyslog yang membaca dan memisahkan log dari programname bisa memisahkannya.

Selesai.

Untuk memeriksa lognya, cek di syslog server, di direktori /var/log/rsyslog.

Untuk client lebih dari satu, caranya sama. tinggal seusaikan saja sender di syslog servernya, dan untuk konfigurasi di client sama saja.

Oke mungkin sekian dulu tutorial singkat kali ini, semoga bermanfaat. Jika ada yang ingin ditanyakan silahkan tinggalkan komentar.

Referensi:

  • https://www.rsyslog.com/doc/master/index.html
  • http://nginx.org/en/docs/syslog.html

Artikel Terkait Server