Pada pos sebelumnya telah dibahas bagaimana memperkuat sistem operasi dengan konfigurasi kendali akses dan perbaruan. Setelah sistem operasi dikonfigurasi terhadap kendali akses maka langkah selanjutnya adalah memelihara sistem agar dapat dikenali perubahan konfigurasi ataupun kerawanan baru pada sistem melalui manajemen log. Sehingga jika terjadi kesalahan atau kerusakan pada sistem dapat diketahui penyebabnya dari informasi log.
Menurut NIST proses pemeliharaan keamanan meliputi:
- monitoring dan analisis informasi log
- melakukan backup rutin
- pemulihan keamanan yang terkompromi
- pengujian keamanan sistem rutin
- menggunakan perangkat lunak yang sesuai untuk memperbarui aplikasi dan monitor perubahan konfigurasi
Pos ini akan membahas bagaimana mengenali manajemen log pada sistem operasi Debian Wheezy dan aplikasi peladen web serta mengkonfigurasi suatu peladen yang dijadikan sebagai peladen log.
Mengenali log pada sistem operasi
Log pada sistem operasi Debian Wheezy terletak pada direktori /var/log/. Kita dapat melihatnya dengan ketik dalam terminal:
$ls -l /var/log/

Terdapat beberapa log dalam sistem operasi Debian Wheezy yaitu:
Nama fasilitas | Program apa yang direpresentasikan |
MESSAGES | log sistem secara keseluruhan mulai sistem berjalan. |
DMESG | informasi buffer kernel saat booting seperti perangkat keras yang dideteksi kernel. |
AUTH | informasi otorisasi sistem seperti login pengguna. |
BOOT | informasi saat sistem booting. |
DAEMON | log informasi oleh daemon yang berjalan di belakang sistem. |
DPKG | informasi yang mencatat pemasangan/penghapusan paket. |
KERN | log informasi kernel yang dapat membantu jika kustomisasi kernel. |
LASTLOG | informasi login pengguna terbaru dalam format non ASCII. |
log informasi dari peladen surel yang berjalan dalam sistem. | |
USER | informasi tingkatan seluruh pengguna. |
ALTERNATIVES | mencatat informasi pembaruan alternatif. |
BTMP | mencatat percobaan login yang gagal. |
WTMP | mencatat login untuk mencari tahu pengguna yang masuk dalam sistem dan menjalankan perintah. |
FAILLOG | informasi percobaan login pengguna yang gagal. |
APACHE2 | log dari peladen web apache. |
Nama level | Apa yang direpresentasikan |
EMERG | Kondisi darurat, biasanya di-broadcast ke semua pengguna. |
ALERT | Sebuah kondisi yang harus diperbaiki sesegera mungkin, seperti basis data sistem rusak. |
CRIT | Kondisi kritis, misalnya kesalahan pada perangkat keras. |
ERR | Kesalahan-kesalahan. |
WARNING | Pesan peringatan. |
NOTICE | Kondisi yang bukan merupakan kondisi salah, namun kemungkinan harus ditangani secara khusus. |
INFO | Pesan informatif. |
DEBUG | Pesan-pesan yang berisi informasi yang umumnya digunakan ketika men-debug program. |
NONE | Level khusus untuk menonaktifkan fasilitas. |
Rotasi log
Pencatatan log dalam sistem akan membutuhkan sumber daya memori cakram penyimpanan yang bertambah. Untuk mengatasi masalah keterbatasan tersebut perlu dilakukan rotasi penyimpanan log sehingga log yang lama dan sudah tidak dibutuhkan dapat dihapus untuk kemudian diganti dengan log yang baru.
Konfigurasi rotasi log dapat dilihat pada berkas logrotate.conf dan direktori logrotate.d untuk mengaksesnya dalam terminal ketik:
$sudo nano /etc/logrotate.conf

Direktori logrotate.d menyimpan konfigurasi log yang khusus atau log dari aplikasi yang dipasang dalam sistem. Penjelasan lebih lengkap dari perintah konfigurasi rotasi log dapat dilihat pada terminal dengan ketik:
$man logrotate
Log MySQL
Aplikasi MySQL memiliki pencatatan log yang terpisah dari sistem operasi sama seperti log peladen Apache. Secara default, konfigurasi log MySQL belum berjalan setelah dipasang. Oleh karena itu, perlu dikonfigurasi dahulu sehingga sistem dapat mencatat log ketika MySQL berjalan.
Log yang ada dalam aplikasi MySQL antara lain:
Nama fasilitas | Program apa yang direpresentasikan |
ERROR LOG | informasi kesalahan yang muncul saat peladen berjalan dan saat peladen mulai atau berhenti. |
GENERAL QUERY LOG | catatan umum yang dilakukan peladen seperti connect, disconnect, dan query. |
SLOW QUERY LOG | mencatat query. |
Konfigurasi log MySQL dapat dilihat pada berkas my.cnf dengan ketik dalam terminal:
$sudo nano /etc/mysql/my.cnf

Error log dalam MySQL secara default akan tercatat pada syslog karena konfigurasi berkas /etc/mysql/conf.d/mysqld_safe_syslog.cnf. Namun untuk mengaktifkan General query log dan Slow query log dapat dilakukan dengan menghapus tanda komentar (#) pada berkas my.cnf.

Rotasi log MySQL dikonfigurasi pada berkas mysql-server dalam direktori logrotate.d. Dengan menyunting berkas tersebut dapat diatur bagaimana MySQL melakukan rotasi log setelah aktif. Untuk menyuntingnya ketik dalam terminal:
$sudo nano /etc/logrotate.d/mysql-server

Log Apache2
Aplikasi peladen web Apache2 memiliki direktori log di dalam direktori /var/log/ yang hanya dapat diakses oleh akun root. Untuk melihat catatan log Apache2 buka berkas access.log untuk catatan login dan error.log untuk kesalahan saat peladen berjalan dengan ketik dalam terminal:
#nano /var/log/apache2/access.log

#nano /var/log/apache2/error.log

Log akses pada WordPress
Aplikasi web WordPress membutuhkan suatu plugin sebagai perangkat yang membantu manajemen log akses pengguna. Plugin yang dibutuhkan sangat beragam, dalam studi ini dicontohkan dengan menggunakan WP Security Audit Log yang dapat diunduh pada tautan berikut (klik di sini).

Langkah pertama yaitu login pada akun WordPress dan buka halaman Plugin dari Dashboard. Selanjutnya klik Add New.

Halaman Add Plugin akan muncul, lalu klik Upload Plugin.

Klik Browse untuk mencari unduhan berkas plugin. Selanjutnya klik Install Now.

WordPress akan melakukan pemasangan yang selanjutnya diperlukan aktivasi plugin dengan klik Activate Plugin.

Setelah selesai aktivasi maka plugin yang telah dipasang dapat dilihat pada halaman Dashboard.

Log belum tercatat oleh plugin setelah pemasangan.

Keluar dari peladen WordPress lalu masuk kembali sebagai contoh pencatatan log pengguna.

Setelah pengguna berhasil masuk WordPress maka dari halaman Dashboard sudah dicatat oleh log.

Penjelasan lebih lengkap log yang dicatat ada pada halaman Audit Log.

Log remot
Manajemen log dalam suatu sistem yang terintegrasi memiliki beberapa tipe metode antara lain:
- log pada peladen yang sama sehingga setiap catatan disimpan dalam direktori lokal peladen.
- log relay antara dua atau lebih cabang peladen yang kemudian setiap cabang mengirimkan log ke pusat data log
- log remot pada satu peladen log yang menerima seluruh log dari setiap peladen lainnya.
Log remot memudahkan administrator untuk memantau setiap peladen hanya dari satu peladen log. Dalam beberapa sistem operasi linux seperti Debian dan Red Hat memiliki fitur log remot yaitu rsyslog. Fitur rsyslog akan dikonfigurasi sehingga terdapat satu peladen log yang menerima log dari peladen lainnya.
Dalam studi ini, terdapat peladen Debian yang bertindak sebagai peladen log dan peladen Ubuntu sebagai klien log. Hal yang diperlukan adalah memastikan bahwa konfigurasi jaringan membolehkan koneksi menggunakan protokol UDP pada port 514 antar peladen. Selanjutnya instalasi kebutuhan paket di setiap peladen dengan ketik dalam terminal:
$sudo apt-get install rsyslog rsyslog-doc
Konfigurasi rsyslog terdapat pada berkas /etc/ryslog.conf dan direktori /etc/rsyslog.d/. Misalkan alamat IP peladen log adalah 192.168.56.10 dan klien 192.168.56.11 maka terlebih dahulu salin konfigurasi awal rsyslog peladen log dengan ketik dalam terminal:
$cd /etc/
Masuk dalam direktori /etc/ lalu
$sudo cp rsyslog.conf rsyslog.conf.orig
Sunting berkas
$sudo nano rsyslog.conf
Tambahkan baris perintah
# provides support for local system logging
$ModLoad imuxsock
# provides kernel logging support (previously done by rklogd)
$ModLoad imklog
# provides UDP syslog reception. For TCP, load imtcp.
$ModLoad imudp
# For TCP, InputServerRun 514
$UDPServerRun 514
# This one is the template to generate the log filename dynamically, depending on the client's IP address.
$template FILENAME,"/var/log/192.168.56.11/syslog.log"
# Log all messages to the dynamically formed file. Now each clients log (192.168.1.2, 192.168.1.3,etc...), will be under a separate directory which is formed by the template FILENAME.
*.* ?FILENAME
Mulai ulang layanan rsyslog dengan perintah:
$sudo service rsyslog restart
Lakukan hal yang sama terhadap konfigurasi klien log dengan menambahkan baris perintah
$ModLoad imuxsock
$ModLoad imklog
# Provides UDP forwarding. The IP is the server's IP address
*.* @192.168.56.10:514
# Provides TCP forwarding. But the current server runs on UDP
# *.* @192.168.56.10:514
Mulai ulang layanan rsyslog dengan perintah:
$sudo service rsyslog restart
Karena simulasi ini menggunakan VirtualBox maka di dalam direktori /var/log/ terdapat direktori alamat IP virtual. Untuk melihat log dari klien, akses direktori alamat IP dengan root peladen log dengan ketik dalam terminal:
#tail -f /var/log/192.168.43.44/syslog.log
Maka akan ada tambahan log jika klien melakukan sesuatu seperti login dan logout.

