Cara Mengonfigurasi Logging Jarak Jauh dengan Rsyslog di Ubuntu 18.04

Dalam tutorial ini, kita akan belajar bagaimana mengkonfigurasi remote logging dengan Rsyslog di Ubuntu 18.04

File log adalah file yang berisi pesan tentang sistem, termasuk kernel, service, dan aplikasi yang berjalan di dalamnya. Ada file log yang berbeda untuk informasi yang berbeda. Misalnya, ada file log sistem default, file log hanya untuk pesan keamanan, dan file log untuk tugas cron.

File log berguna saat memecahkan masalah dengan sistem Linux. Misalnya mencari upaya login yang tidak sah ke sistem.

Beberapa file log dikendalikan oleh daemon rsyslogd, pengganti yang disempurnakan untuk sysklogd. Ini menyediakan pemfilteran yang diperluas, relai pesan terenkripsi, berbagai opsi konfigurasi, modul input dan output. Ini juga mendukung protokol transportasi TCP atau UDP.

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.

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

Konfigurasikan Server Logging Jarak Jauh dengan Rsyslog di Ubuntu 18.04

Instal Rsyslog di Ubuntu 18.04

Rsyslog diinstal pada Ubuntu 18.04 secara default. Anda dapat memverifikasi ini dengan memeriksa versi rsyslog yang diinstal.

rsyslogd -v

Jika tidak diinstal, jalankan perintah di bawah ini untuk menginstalnya.

apt install rsyslog -y

Setelah instalasi selesai, mulai dan aktifkan service rsyslog.

systemctl start rsyslog systemctl enable rsyslog

Izinkan Rsyslog melalui Firewall

Jika firewall sedang berjalan, buka rsyslog melaluinya.

ufw allow 514/udp

Nah, apakah Anda juga tertarik untuk mengkonfigurasi syslog/rsyslog di Solaris 11.4? Periksa tautan di bawah ini;

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 18.04

Konfigurasikan Ubuntu 18.04 sebagai Server Log

Sekarang setelah rsyslog diinstal dan dijalankan, Anda perlu mengonfigurasinya agar berjalan dalam mode server. Untuk melakukannya, edit/etc/rsyslog.conf file konfigurasi dan batalkan komentar pada baris untuk penerimaan syslog UDP di MODULES bagian seperti yang ditunjukkan di bawah ini;

vim /etc/rsyslog.conf
# provides UDP syslog reception module(load="imudp") input(type="imudp" port="514") 

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.

Secara default UDP syslog diterima pada port 514. Syslog TCP mungkin memerlukan 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")

Verifikasi bahwa rsyslog sekarang mendengarkan pada dua port;

netstat -4altunp | grep 514
tcp 0 0 0.0.0.0:50514 0.0.0.0:* LISTEN 10814/rsyslogd udp 0 0 0.0.0.0:514 0.0.0.0:* 10814/rsyslogd

Anda mungkin memperhatikan bahwa port UDP tidak memiliki status LISTEN karena tidak memiliki koneksi dan tidak memiliki konsep “mendengarkan”, “mendirikan”, “ditutup”, atau semacamnya.

Buka port baru di UFW;

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/bitsbagian 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.

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

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.43.0/24, [::1]/128, *.example.net, servera.example.com $AllowedSender TCP, 192.168.43.0/24, [::1]/128, *.example.net, servera.example.com

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:

$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

Setelah Anda selesai dengan konfigurasi, Anda sekarang dapat me-restart rsyslogservice dengan menjalankan perintah di bawah ini. Sebelum Anda dapat restart rsyslogd, jalankan pemeriksaan konfigurasi.

rsyslogd -f /etc/rsyslog.conf -N1
rsyslogd: version 8.32.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 Jarak Jauh

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

Verifikasi Koneksi Port Jarak Jauh

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

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

Verifikasi konektivi
tas 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.43.154 514

Jika semuanya baik-baik saja, edit file konfigurasi rsyslog seperti gambar di bawah ini;

vim /etc/rsyslog.conf

Untuk mengirim log autentikasi melalui port 514/UDP, tambahkan baris berikut di akhir file.

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

Untuk mengirim semua log melalui port 50514/TCP, tambahkan baris berikut di akhir file.

# Send logs to remote syslog server over TCP 50514 *.* @@192.168.43.154: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;

# Send logs to remote syslog server over UDP auth,authpriv.* @192.168.43.154:514  # 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 dan verifikasi yang sama.

ls /var/log/remotelogs/
127.0.0.1 192.168.43.214

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

ls /var/log/remotelogs/192.168.43.214/
sshd.log sudo.log su.log systemd-logind.log
tail -5 /var/log/remotelogs/192.168.43.214/sshd.log 2018-10-21T11:01:33+03:00 mydevapp sshd[13430]: Disconnected from user amos 192.168.43.149 port 60808 2018-10-21T11:01:33+03:00 mydevapp sshd[13363]: pam_unix(sshd:session): session closed for user amos 2018-10-21T11:01:37+03:00 mydevapp sshd[13569]: pam_ecryptfs: Passphrase file wrapped 2018-10-21T11:01:37+03:00 mydevapp sshd[13567]: Accepted password for amos from 192.168.43.149 port 60854 ssh2 2018-10-21T11:01:37+03:00 mydevapp sshd[13567]: pam_unix(sshd:session): session opened for user amos by (uid=0)

Nah, itu saja yang diperlukan untuk mengonfigurasi logging jarak jauh dengan rsyslog di Ubuntu 18.04. Kami harap panduan ini bermanfaat. Menikmati.