Setup Server Rsyslog di Ubuntu 20.04

Dalam tutorial ini, Anda akan belajar cara mengatur server rsyslog di Ubuntu 20.04. Rsyslog adalah implementasi multi-utas dari syslogd (utilitas sistem yang menyediakan dukungan untuk pencatatan pesan), dengan fitur-fitur yang meliputi:

  • syslog yang andal melalui TCP, SSL/TLS, dan RELP
  • buffering disk sesuai permintaan
  • peringatan email
  • menulis ke database MySQL atau PostgreSQL (melalui plugin output terpisah)
  • daftar pengirim yang diizinkan
  • memfilter pada bagian mana pun dari pesan syslog
  • kompresi pesan on-the-wire
  • kontrol format output berbutir halus
  • failover ke tujuan cadangan
  • syslog terenkripsi kelas perusahaan yang menyampaikan. Ini adalah syslogd default pada sistem Debian.

Rsyslog dapat dikonfigurasi dalam model client/server. Ketika dikonfigurasi sebagai client, ia mengirimkan log ke server jauh melalui jaringan melalui protokol TCP/UDP. Sebagai server, ia menerima log melalui jaringan dari client jarak jauh pada port 514 TCP/UDP atau port kustom apa pun yang dikonfigurasi untuk mendengarkannya.

Rsyslog memfilter pesan syslog berdasarkan filter yang dipilih. Anda mungkin ingin membaca artikel kami sebelumnya tentang  pengenalan dasar filter rsyslog.

Setup Server Rsyslog di Ubuntu 20.04

Apakah Anda menggunakan Debian 10? Periksa tautan di bawah ini;

Setup Server Rsyslog di Debian 10

Instal Rsyslog di Ubuntu 20.04

Rsyslog adalah syslogd default pada sistem Debian dan biasanya diinstal pada Ubuntu 20.04 secara default.

Anda dapat memverifikasi ini dengan memeriksa versi rsyslog yang diinstal.

apt list -a rsyslog
Listing... Done rsyslog/focal-updates,now 8.2001.0-1ubuntu1.1 amd64 [installed,automatic] rsyslog/focal 8.2001.0-1ubuntu1 amd64

Jika karena alasan apa pun tidak diinstal, jalankan perintah di bawah ini untuk menginstalnya.

apt update
apt install rsyslog -y

Setelah instalasi selesai, mulai dan aktifkan service rsyslog.

systemctl enable --now rsyslog

Setup Server Rsyslog di Ubuntu 20.04

Sekarang setelah rsyslog diinstal dan dijalankan, Anda perlu mengonfigurasinya agar berjalan dalam mode server. Sebagaimana dinyatakan di atas, rsyslog dapat dikonfigurasi sebagai client untuk mengirim log ke server logging pusat atau server untuk menerima dan menyimpan log dari sistem lain.

Dalam panduan ini, kami menyiapkan RSyslog sebagai server pada kotak Ubuntu 20.04.

Buka file konfigurasi ryslog untuk diedit;

vim /etc/rsyslog.conf
Tentukan Protokol dan Port Server RSyslog

Untuk memulainya, tentukan protokol dan port yang Anda inginkan untuk menerima log masuk.

Anda dapat memilih untuk menggunakan UDP atau TCP dan port pilihan Anda.

Perhatikan bahwa penerimaan syslog TCP jauh lebih andal daripada syslog UDP dan masih cukup cepat. Alasan utamanya adalah, UDP mungkin mengalami kehilangan pesan. Ini terjadi ketika server syslog harus menerima banyak pesan. Jika buffer sistem untuk UDP penuh, semua pesan lainnya akan dihapus. Dengan TCP, ini tidak akan terjadi. Namun terkadang ada baiknya juga untuk mengonfigurasi server UDP. Yaitu, karena beberapa perangkat (seperti router) tidak dapat mengirim syslog TCP dengan desain. Dalam hal ini, Anda akan memerlukan kedua jenis server syslog agar semuanya tercakup.

Dalam pengaturan ini, kami akan mengonfigurasi Rsyslog untuk menggunakan protokol UDP dan TCP untuk penerimaan log masing-masing melalui port 514 dan 50514.

Secara default UDP syslog diterima pada port 514.

Aktifkan penerimaan syslog UDP:

Dalam /etc/rsyslog.conf file konfigurasi, batalkan komentar pada baris untuk penerimaan syslog UDP di MODULES bagian seperti yang ditunjukkan di bawah ini;

... ################# #### MODULES #### #################... # provides UDP syslog reception module(load="imudp") input(type="imudp" port="514") 

Aktifkan penerimaan syslog TCP:

Syslog TCP mungkin perlu menggunakan port yang berbeda karena sering kali service RPC menggunakan port ini juga.

Untuk mengatur rsyslog agar berjalan pada port TCP yang berbeda, katakanlah port TCP, 50514, batalkan komentar pada jalur penerimaan TCP dan ubah port seperti yang ditunjukkan di bawah ini;

# provides TCP syslog reception module(load="imtcp") input(type="imtcp" port="50514")

Simpan dan keluar dari file;

Mulai ulang service rsyslog;

systemctl restart rsyslog

Verifikasi bahwa rsyslog sekarang mendengarkan pada dua port;

ss -4altunp | grep 514
udp UNCONN 0 0 0.0.0.0:514 0.0.0.0:* users:(("rsyslogd",pid=52382,fd=5)) tcp LISTEN 0 25 0.0.0.0:50514 0.0.0.0:* users:(("rsyslogd",pid=52382,fd=7))

You may notice that UDP port has no LISTEN state because it is connectionless and has no concept of “listening”, “established”, “closed”, or anything like that.

Izinkan Rsyslog melalui Firewall

Jika firewall sedang berjalan, buka rsyslog melaluinya.

ufw allow 514/udp
ufw allow 50514/tcp
Tentukan Pengirim yang Diizinkan

Anda mungkin juga ingin secara eksplisit mengatur client jarak jauh yang diizinkan untuk mengirim pesan syslog ke rsyslogd. Untuk mencapai ini, Anda dapat mengatur arahan global menggunakan $AllowedSender pengarahan.

Daftar pengirim yang diizinkan dapat ditentukan untuk pengirim UDP dan TCP secara terpisah. Sintaks untuk menentukannya adalah:

$AllowedSender [UDP/TCP], ip[/bits], ip[/bits]

  • ip[/bits] adalah alamat ip engine atau jaringan seperti pada “192.0.2.0/24” atau “192.0.2.10”. jika /bits bagian dihilangkan, satu host diasumsikan. “/0” tidak diperbolehkan, karena itu akan cocok dengan sistem pengiriman apa pun.
  • Hostnames, dengan dan tanpa wildcard, juga dapat disediakan. Jika demikian, hasil resolusi DNS pembalikan digunakan untuk penyaringan. Beberapa pengirim yang diizinkan dapat ditentukan dalam daftar yang dipisahkan koma.

Sebaiknya tentukan pengirim dengan volume lalu lintas tinggi sebelum pengirim dengan volume lebih rendah.

Untuk mengizinkan host tertentu untuk logging UDP atau TCP, masukkan baris berikut;

vim /etc/rsyslog.conf
... ########################### #### GLOBAL DIRECTIVES #### ########################### # $AllowedSender - specifies which remote systems are allowed to send syslog messages to rsyslogd $AllowedSender UDP, 192.168.57.0/24, [::1]/128, *.example.net, servera.example.com $AllowedSender TCP, 192.168.58.0/24, [::1]/128, *.example.net, servera.example.com

Nama host harus dapat dipecahkan karena sebelum ACL diperbarui, mereka akan diselesaikan menjadi IP masing-masing.

Perhatikan juga bahwa arahan di atas hanya mengizinkan penerimaan UDP dari 192.168.57.0/24 dan penerimaan TCP dari 192.168.58.0/24.

Sebanyak mengizinkan host tertentu melalui arahan ini, ide bagus untuk menerapkan batasan pengirim yang diizinkan melalui firewall.

Misalnya, untuk mengizinkan host dari 192.168.57.0/24 dan 192.168.58.0/24 jaringan;

ufw allow from 192.168.57.0/24 to any port 514 proto udp ufw allow from 192.168.57.0/24 to any port 50514 proto tcp
ufw allow from 192.168.58.0/24 to any port 514 proto udp ufw allow from 192.168.58.0/24 to any port 50514 proto tcp
Konfigurasi Template Rsyslog

Template adalah fitur utama rsyslog. Setiap output yang dihasilkan oleh rsyslog dapat dimodifikasi dan diformat sesuai kebutuhan Anda dengan menggunakan template.

Untuk membuat template gunakan sintaks berikut di /etc/rsyslog.conf:

< pre class="notranslate">$template TEMPLATE_NAME,”text %PROPERTY% more text”, [OPTION]

Dengan demikian, kita dapat membuat template kita seperti;

# provides TCP syslog reception module(load="imtcp") input(type="imtcp" port="50514") #Custom template to generate the log filename dynamically based on the client's IP address. $template RemInputLogs, "/var/log/remotelogs/%FROMHOST-IP%/%PROGRAMNAME%.log" *.* ?RemInputLogs

Ini akan mengkategorikan log yang diterima dari host jarak jauh ke dalam file log untuk program tertentu yang bertanggung jawab atas pembuatan log tersebut.

Setelah Anda selesai dengan konfigurasi, simpan dan keluar dari file;

Anda sekarang dapat memulai kembali  rsyslog service dengan menjalankan perintah di bawah ini. Sebelum Anda dapat restart rsyslogd, jalankan pemeriksaan konfigurasi.

rsyslogd -f /etc/rsyslog.conf -N1
rsyslogd: version 8.2001.0, config validation run (level 1), master config /etc/rsyslog.conf rsyslogd: End of config validation run. Bye.

Jika semuanya baik-baik saja, lanjutkan untuk me-restart rsyslog.

systemctl restart rsyslog

Rsyslogd sekarang siap menerima log dari host jarak jauh.

Konfigurasikan Client Rsyslog Jarak Jauh untuk Meneruskan log Server Rsyslog

Sekarang saatnya mengkonfigurasi client jarak jauh untuk mengirim pesan syslog ke server syslog jarak jauh. Masuk dan lanjutkan sebagai berikut.

Verifikasi Koneksi Port Server Rsyslog Jarak Jauh

Untuk memverifikasi konektivitas ke port TCP server rsyslog jarak jauh 50514, jalankan perintah di bawah ini;

telnet 192.168.57.3 50514
Trying 192.168.57.3... Connected to 192.168.57.3. Escape character is '^]'. ^] telnet>

Verifikasi konektivitas ke port UDP 514. Karena Anda tidak dapat melakukan telnet ke port UDP 514, gunakan perintah netcat. Di server, jalankan perintah di bawah ini;

nc -ul 514

Pada client, jalankan perintah di bawah ini, tekan ENTER dan ketik apa saja. Anda harus dapat melihat apa yang Anda ketik di server.

nc -u 192.168.57.3 514

Jika semuanya baik-baik saja, edit file konfigurasi rsyslog sistem client seperti yang ditunjukkan di bawah ini;

vim /etc/rsyslog.conf

Untuk mengirim log autentikasi melalui port 514/UDP, tambahkan baris berikut di akhir file. Catatan, ini harus dilakukan dari host di bawah192.168.57.0/24 sesuai dengan AllowedSender pengarahan.

# Send logs to remote syslog server over UDP auth,authpriv.* @192.168.57.3:514

Untuk mengirim semua log melalui port 50514/TCP, tambahkan baris berikut di akhir file. Catatan, ini harus dilakukan dari host di bawah192.168.58.0/24 sesuai dengan arahan AllowedSender.

# Send logs to remote syslog server over TCP 50514 *.* @@192.168.57.3:50514

Sebagai bantalan untuk berjaga-jaga jika server rsyslog jarak jauh mati dan log Anda sangat penting sehingga Anda tidak ingin kehilangannya, atur antrian disk rsyslog untuk buffering dalam file konfigurasi rsyslog seperti yang ditunjukkan di bawah ini;

# Define Disk Queue Buffer in case the server goes down $ActionQueueFileName queue # define a file name for disk assistance. $ActionQueueMaxDiskSpace 1g # maximum size that all queue files together will use on disk. $ActionQueueSaveOnShutdown on # specifies that data should be saved at shutdown $ActionQueueType LinkedList # holds enqueued messages in memory which makes the process very fast.  $ActionResumeRetryCount -1 # prevents rsyslog from dropping messages when retrying to connect if server is not responding,

Mulai ulang service rsyslog pada client.

systemctl restart rsyslog

Anda sekarang dapat keluar dari client dan masuk lagi. Log otentikasi harus tersedia di server rsyslog.

Masuk ke server Rsyslog dan verifikasi yang sama.

ls /var/log/remotelogs/
127.0.0.1/ 192.168.57.35/

Dalam kasus kami, kami hanya mengirim log otentikasi ke server rsyslog jarak jauh.

ls /var/log/remotelogs/192.168.57.35/
CRON.log sshd.log sudo.log su.log
tail -5 /var/log/remotelogs/192.168.57.35/sshd.log 
2021-03-25T22:14:19+03:00 debian sshd[590]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.57.1 user=root 2021-03-25T22:14:22+03:00 debian sshd[590]: Failed password for root from 192.168.57.1 port 56714 ssh2

Dan begitulah sederhananya untuk mengatur server rsyslog di Ubuntu 20.04 untuk pencatatan jarak jauh pusat.

Tutorial lainnya

Konfigurasikan Rsyslog di Solaris 11.4 untuk Mengirim log ke Server Log Jarak Jauh

Konfigurasi Syslog di Solaris 11.4 untuk Logging Jarak Jauh

Ingin menggunakan NXLog untuk meneruskan log? Lihat artikel kami dengan mengikuti tautan di bawah ini;

Konfigurasikan NXLog untuk Meneruskan Log Sistem ke Server Rsyslog di Ubuntu 20.04

Cara Mengonfigurasi Logging Jarak Jauh dengan Rsyslog di Ubuntu 18.04