Posts tagged ‘Ubuntu’
Memakai Snort Sebagai IPS Di Notebook
Kedengarannya memang aneh, kenapa harus menjalankan Snort di notebook? Bukankah biasanya Snort IPS dijalankan pada komputer server yang memiliki dua network card (NIC) terpisah? Tapi, bukanlah hal mustahil untuk menjalankan Snort tanpa melalui bridging (dua network card). Artikel ini mengasumsikan penggunaan DAQ module NFQ seperti yang dituliskan di artikel sebelumnya. Artikel ini juga mengasumsikan penggunaan Linux UBuntu 10 LTS. Setelah Snort berhasil dikonfigurasi dan dijalankan dengan baik, yang perlu dilakukan sekarang adalah melakukan pengaturan iptables.
Jika memakai Snort sebagai IPS pada notebook atau komputer yang dipakai untuk berselancar di Internet, pengguna harus memilih untuk mengorbankan rules di iptables atau tidak:
- Seluruh packet yang masuk pertama kali akan diterima oleh modul Netfilter di Ubuntu. Untuk pendeteksian secara maksimal, packet yang masuk dapat dengan segera dialihkan ke Netfilter Queue guna diolah oleh Snort. Akan tetapi, packet tersebut tidak dicocokkan satu per satu dengan rules iptables lainnya lagi.
- Atau, packet yang masuk dapat di-saring dulu dengan rules di iptables, baru kemudian packet yang lolos dialihkan ke Netfilter Queue untuk diolah oleh Snort. Kekurangannya adalah Snort tidak memperoleh packet yang mengidentifikasikan serangan secara lengkap, karena beberapa packet mungkin sudah disaring terlebih dahulu oleh Netfilter.
Apapun metode yang dipakai, semuanya melibatkan penambahan rules di iptables untuk mengalihkan packet ke Netfilter Queue. Yang membedakan adalah urutan/posisi rule tersebut. Rules tersebut terlihat seperti:
iptables -A INPUT -j QUEUE iptables -A OUTPUT -j QUEUE
Tentunya pengguna dapat menambahkan parameter lainnya sesuai kebutuhan dan selera, tetapi yang harus ada adalah -j QUEUE yang menunjukkan bahwa packet akan ditampung oleh Netfilter Queue. Bila tidak aplikasi yang membaca queue, misalnya Snort sedang tidak berjalan, maka packet akan di-drop.
Bagi yang menggunakan ufw (uncomplicated firewall), dapat langsung mengedit file yang ada di /etc/ufw/after.rules atau /etc/ufw/before.rules. Jangan lupa mematikan dan menyalakan kembali firewall setelah melakukan perubahan pada file. Sebagai contoh, seseorang dapat menambahkan baris berikut pada /etc/ufw/after.rules:
-A ufw-after-input -j QUEUE -A ufw-after-output -j QUEUE
Langkah selanjutnya, karena Snort dipakai pada “perangkat desktop” yang menjalankan banyak program sehari-hari dan belum tentu stabil, pengguna sebaiknya menambahkan program Snort pada daftar daemo yang diproses oleh Upstart di Ubuntu. Upstart adalah sebuah program bawaan di Ubuntu yang memiliki fungsi seperti /etc/inittab di UNIX. Upstart dapat memantau proses Snort, dan bila oleh suatu hal, Snort harus berhenti dijalankan, Upstart akan secara otomatis “menghidupkan” Snort kembali.
Buat sebuah file baru di direktori /etc/init, misalnya /etc/init/snort.conf yang memiliki isi seperti berikut ini:
start on started ufw stop on stopping ufw respawn exec /usr/bin/snort --daq nfq -D -c /etc/snort.conf -Q
Pada konfigurasi di atas, Snort akan dijalankan setelah ufw, dan akan dimatikan sebelum ufw dimatikan. Hal ini dilakukan karena Snort memakai modul NFQ yang berkaitan erat dengan iptables. Jangan lupa untuk menyertakan respawn yang berarti proses akan secara otomatis dihidupkan kembali bila tidak dimatikan melalui Upstart.
Setelah ini, restart komputer, dan berikan perintah seperti:
#initctl list
...
snort start/running, process 2084
...
Hal ini memperlihatkan bahwa Upstart telah menjalankan Snort secara otomatis begitu notebook/komputer rumah dijalankan, dan akan terus menjaga agar proses Snort senantiasa aktif.
Snort IPS Di Ubuntu 10 LTS
Instalasi Snort di Ubuntu 10 LTS memang tidak sulit, cukup mengikuti langkah step-by-step yang disediakan oleh pembuatnya yang dapat di-download dalam bentuk PDF di http://www.snort.org/assets/158/011-snortinstallguide2905.pdf. Akan tetapi, setelah mengikuti langkah-langkah tersebut, Snort berjalan sebagai IDS (Intrusion Detection System). Sebagai IDS, Snort hanya menganalisa packet yang ada dan memberikan peringatan bila terjadi serangan dari hacker. Jika seperti ini kasusnya, IDS dikatakan bekerja dalam modus passive. Bila ingin Snort memblokir upaya serangan dan memberikan respon atas serangan hacker, maka Snort harus bekerja sebagai IPS (Intrusion Prevention System). Snort akan berfungsi sebagai IPS bila berjalan dalam modus inline.
Bila dijalankan secara standard, Snort akan memakai DAQ module bernama pcap. DAQ Module pcap ini tidak mendukung modus inline, sehingga administrator yang ingin menjalankan Snort sebagai IPS harus memakai DAQ module lain. Untuk melihat apa saja DAQ module yang ada, berikan perintah seperti:
# snort --daq-list
Available DAQ modules:
pcap(v3): readback live multi unpriv
ipfw(v2): live inline multi unpriv
dump(v1): readback live inline multi unpriv
afpacket(v4): live inline multi unpriv
Hasil output tersebut menunjukkan bahwa pcap tidak mendukung modus inline. Salah DAQ Module bawaan, yaitu NFQ yang memakai Netfilter, sama sekali tidak terlihat. Padahal Netfilter dan iptables merupakan dasar yang membentuk fungsi packet filtering di kernel Linux.
Langkah pertama yang harus dilakukan agar DAQ Module nfq dibuat adalah dengan meng-install paket libnetfilter-queue-dev (beserta paket yang dibutuhkanya seperti libnetfilter-queue1 dan lainnya). Di Ubuntu 10 LTS, paket tersebut masih belum ter-install sehingga administrator perlu meng-install dengan menggunakan apt-get (berbasis console) ataupun Ubuntu Software Center (berbasis GUI).
Langkah berikutnya, upgrade libpcap menjadi versi terbaru, yang dapat didownload di www.tcpdump.org. Ubuntu 10 LTS datang dengan repository yang berisi libpcap0.8. Versi libpcap ini memiliki bug yang menyebabkan Snort akan berhenti berjalan dan memberikan pesan kesalahan yang berkaitan dengan log_tcpdump dimana pesan-nya adalah Snort tidak dapat menulis pada file /var/log/snort (atau lokasi direktori log yang telah ditentukan sebelumnya). Pesan kesalahan ini cukup menipu, karena sama sekali tidak berhubungan dengan permission di direktori tersebut, dan akan hilang setelah meng-upgrade ke versi libpcap yang lebih baru, misalnya libpcap-1.1.1. Karena repository Ubuntu 10 LTS tidak menunjukkan adanya upgrade versi terbaru dari libpcap, download source secara manual, kemudian jalankan script GNU Autoconf yang disediakan, seperti:
# ./configure --prefix=/usr ... config.status: creating pcap_open_dead.3pcap config.status: creating pcap_open_offline.3pcap config.status: creating config.h # make ... mv pcap-config.tmp pcap-config chmod a+x pcap-config # make install ...
Langkah berikutnya adalah menjalankan script GNU Autoconf untuk DAQ. Source-nya dapat di-download di http://www.snort.org/downloads/860. Seperti biasa, jalankan dahulu script configure:
# ./configure
...
Build AFPacket DAQ module.. : yes
Build Dump DAQ module...... : yes
Build IPFW DAQ module...... : yes
Build IPQ DAQ module....... : no
Build NFQ DAQ module....... : yes
Build PCAP DAQ module...... : yes
Pastikan bahwa pada NFQ DAQ module terdapat tulisan yes sehingga nantinya module NFQ akan dibuat. Setelah itu, seperti biasa, berikan perintah make dan make install.
Berikutnya, lakukan hal yang sama dengan source Snort yang dapat di-download di http://www.snort.org/downloads/867. Berikan perintah seperti:
# ./configure --enable-ipv6 --enable-gre --enable-mpls --enable-targetbased \ --enable-decoder-preprocessor-rules --enable-ppm --enable-perfprofiling \ --enable-zlib --enable-active-response --enable-normalizer --enable-reload \ --enable-react --enable-flexresp3 ... # make ... # make install ...
Langkah terakhir adalah menjalankan Snort dengan argumen khusus sehingga ia bekerja dalam modus inline sebagai IPS. Sebagai contoh, Snort dapat dijalankan dengan parameter seperti berikut ini:
# snort --daq nfq -c /etc/snort/snort.conf -Q
...
nfq DAQ configured to inline.
Reload thread starting...
...
Option –daq menentukan module DAQ yang akan dipakai Snort, yaitu NFQ. Option -c menentukan lokasi file konfigurasi Snort yang tentunya bisa berbeda-beda sesuai kebiasan setiap administrator. Option -Q menunjukkan bahwa Snort harus bekerja dalam modus inline. Bila Snort bekerja sebagai IPS, akan terdapat baris yang isinya seperti “nfq DAQ configured to inline.“
Mengatur Firewall Di Ubuntu
Berhubung sedang memiliki waktu luang, saya men-download Ubuntu terbaru, yaitu Ubuntu 11. Btw, memeriksa versi Ubuntu yang ter-install bisa dilakukan dengan memberikan perintah:
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 11.04 Release: 11.04 Codename: natty
Kesan pertama sama sekali tidak seperti yang saya harapkan, karena tiba-tiba di layar monitor muncul tulisan “Display Out Of Frequency”. Masalah resolusi? Kalau di monitor CRT zaman dahulu, bisa jadi monitor sudah rusak (tidak ada pengaman kalau frekuensi yang dipakai melewati batas frekuensi yang didukung monitor).. Untung saja lampu harddisk masih menunjukkan aktifitas, setelah proses GRUB berakhir, gambar di monitor tampil seperti biasanya. Semua mulai lancar setelah mengedit file /etc/default/grub, dengan menghilangkan tanda komentar (#) di file tersebut:
# The resolution used on graphical terminal # note that you can use only modes which your graphic card supports via VBE # you can see them in real GRUB with the command `vbeinfo' GRUB_GFXMODE=640x480
Jangan lupa update GRUB yang sesungguhnya dengan memanggil update-grub, setelah restart komputer, tampilan GRUB muncul kembali seperti biasanya.
Langkah pertama yang ingin saya lakukan adalah melakukan pengamanan pada sistem operasi yang baru terinstall ini. Hal ini dapat dilakukan dengan melakukan konfigurasi netfilter dengan perintah iptables. Akan tetapi bila perintah iptables dirasa terlalu rumit, Ubuntu menyediakan cara gampangnya yaitu dengan perintah ufw yang merupakan kepanjangan dari uncomplicated firewall. Perlu diperhatikan bahwa ufw bukanlah firewall-nya, melainkan hanya sebuah tool untuk mempermudah pengaturan firewall.
Fakta pertama yang harus diketahui adalah pada awalnya, firewall ‘dimatikan’. Ini berarti tidak ada filter yang terjadi. Untuk ‘menyalakan’ firewall melalui ufw, dapat menggunakan perintah seperti berikut:
# ufw enable Firewall is active and enabled on system startup
Seorang yang paranoid pasti akan memastikan seluruh aktifitas masuk dan keluar di-blokir, dengan memberikan perintah seperti:
# ufw default deny incoming Default incoming policy changed to 'deny' (be sure to update your rules accordingly) # ufw default deny outgoing Default outgoing policy changed to 'deny' (be sure to update your rules accordingly)
Setelah ini, perintah untuk mengatur firewall dapat diberikan. Sebagai contoh, untuk membolehkan hanya akses HTTP dan HTTPS keluar (termasuk akses DNS), berikan perintah seperti:
# ufw allow out http Rule added # ufw allow out https Rule added # ufw allow out 53/udp Rule added
Untuk melihat daftar rule yang sudah ada, berikan perintah seperti:
# ufw status Status: active To Action From -- ------ ---- 80/tcp ALLOW OUT Anywhere 443 ALLOW OUT Anywhere 53/udp ALLOW OUT Anywhere