Posts tagged ‘security’
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.“
Pengenalan Snort
Salah satu aplikasi Linux yang dapat dipakai untuk meningkatkan keamanan komputer adalah Snort. Secara garis besar, Snort adalah sebuah program yang memiliki tiga fungsi atau tiga modus operasi. Snort dapat dipakai dalam packet sniffer mode sehingga bekerja sebagai sniffer sama seperti Wireshark. Sama seperti Wireshark, Snort juga dapat menyimpan setiap packet yang di-capture ke dalam media penyimpan di modus packet logger mode. Akan tetapi berbeda dengan Wireshark, Snort dapat dipakai sebagai komponen NIDS dengan menjalankannya pada Network Intrusion Detection System (NIDS) mode. Pada modus yang terakhir ini, Snort akan menganalisa packet berdasarkan rule yang ada untuk mengenali adanya upaya serangan hacker.
Untuk memulai menggunakan Snort, download requirement serta source Snort, kemudian build & install. Bagi yang memakai distro Ubuntu, libdnet di distro tersebut adalah library yang berbeda dengan yang dibutuhkan Snort. Di Ubuntu, libdnet adalah DECNet libraries, sementara yang dibutuhkan oleh Snort diganti namanya menjadi libdumpnet. Sebaiknya download source dari Google Code, kemudian install ke lokasi /usr, bukan /usr/local. Caranya adalah dengan menambahkan argumen - -prefix=/usr pada saat memanggil script configure.
Berikut adalah contoh menjalankan Snort sebagai packet sniffer:
$ sudo snort -v
Running in packet dump mode
--== Initializing Snort ==--
Initializing Output Plugins!
pcap DAQ configured to passive.
Acquiring network traffic from "eth0".
Decoding Ethernet
--== Initialization Complete ==--
,,_ -*> Snort! <*-
o" )~ Version 2.9.0.5 (Build 135)
'''' By Martin Roesch & The Snort Team: http://www.snort.org/snort/snort-team
Copyright (C) 1998-2011 Sourcefire, Inc., et al.
Using libpcap version 1.1.1
Using PCRE version: 8.12 2011-01-15
Commencing packet processing (pid=31839)
06/05-12:07:03.524481 192.168.1.200:45263 -> 192.168.1.5:53
UDP TTL:64 TOS:0x0 ID:63753 IpLen:20 DgmLen:73 DF
Len: 45
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
06/05-12:07:03.582863 192.168.1.5:53 -> 192.168.1.200:45263
UDP TTL:255 TOS:0x0 ID:4887 IpLen:20 DgmLen:186 DF
Len: 158
...
===============================================================================
Run time for packet processing was 27.619079 seconds
Snort processed 19 packets.
Snort ran for 0 days 0 hours 0 minutes 27 seconds
Pkts/sec: 0
===============================================================================
Packet I/O Totals:
Received: 19
Analyzed: 19 (100.000%)
Dropped: 0 ( 0.000%)
Filtered: 0 ( 0.000%)
Outstanding: 0 ( 0.000%)
Injected: 0
===============================================================================
...
Untuk mencatat rekaman packet ke dalam file teks, Snort bisa dijalankan dengan memberikan perintah seperti:
snort -dev -l ./log
Perintah di atas akan menulis rekaman packet ke dalam direktori log (direktori ini harus sudah dibuat sebelumnya).
Dan untuk modus NIDS, tambahan argumen -c yang merujuk ke file konfigurasi Snort, seperti berikut ini:
snort -d -l ./log -c snort.conf
Pada perintah di atas, file konfigurasinya bernama snort.conf.
Untuk menjalankan Snort sebagai daemon (background process yang terus berjalan), tambahkan argumen -D seperti pada contoh ini:
snort -d -l /var/log/snort.log -c /etc/snort.conf -D
Bicara soal file konfigurasi, berikut adalah contoh isi file konfigurasi:
var LOG_IP 100.10.12.13 alert tcp $LOG_IP any -> any any (msg: "Akses Dari Dia"; sid:1;)
File konfigurasi di atas menyebabkan Snort menghasilkan alert dalam file bernama alert setiap kali IP 100.10.12.13 melakukan akses TCP, dengan pesan berupa “Akses Dari Dia”. Tentu saja ini adalah contoh konfigurasi sederhana yang tidak banyak berguna, akan tetapi cukup untuk menunjukkan syntax file konfigurasi Snort yang lumayan rumit. Contoh di atas mengandung sebuah variabel IP bernama LOG_IP. Variabel tersebut dapat digunakan dengan menulis $LOG_IP yang akan disubstitusi dengan nilai yang sesungguhnya.
Argumen yang biasanya diberikan saat memanggil Snort juga dapat dituliskan ke file konfigurasi sehingga tidak perlu diberikan secara manual pada saat menjalankan Snort, seperti pada contoh berikut:
#sama dengan argumen -D config daemon #sama dengan argumen -d config dump_payload #sama dengan argumen -l config logdir: /var/log/snort var LOG_IP 192.168.1.2 alert tcp $LOG_IP any -> any any (msg: "Akses Dari Dia"; sid:1;)
Gunakan preprocessor untuk memakai processor yang sudah disediakan oleh Snort. Sebagai contoh, untuk mendeteksi terjadinya port scanning, tambahkan konfigurasi berikut:
preprocessor stream5_global:\
track_tcp yes, track_udp yes, track_icmp yes
preprocessor stream5_tcp:\
policy first
preprocessor stream5_udp
preprocessor stream5_icmp
preprocessor sfportscan:\
proto { all } \
scan_type { all } \
sense_level { high }
Konfigurasi di atas akan memakai preprocessor sfPortScan dari Source Fire. Syarat untuk memakai sfPortScan adalah menggunakan preprocessor Stream5. Sekarang, bila seseorang melakukan port scanning (yang merupakan tahap awal dalam serangan), misalnya dengan menggunakan tool Nmap:
$ nmap -A -v 192.168.1.22
Maka, Snort akan menghasilkan alert seperti berikut ini:
[**] [122:1:0] (portscan) TCP Portscan [**] [Priority: 3] 06/06-03:34:13.052153 192.168.1.49 -> 192.168.1.22 PROTO:255 TTL:64 TOS:0x0 ID:0 IpLen:20 DgmLen:158 DF
Alert tersebut menunjukkan bahwa seseorang dari IP 192.168.1.49 melakukan port scanning untuk komputer dengan IP 192.168.1.22.
Oracle Security: Enkripsi Data
Procedure dan function yang berhubungan dengan algoritma enkripsi data dapat ditemukan di package DBMS_CRYPTO. Aku mencoba latihan sederhana dengan membuat sebuah fungsi enkripsi seperti berikut:
create or replace FUNCTION ENKRIP
( nilai IN VARCHAR2, key IN VARCHAR2
) RETURN RAW AS
nilai_raw RAW(2000);
key_raw RAW(2000);
nilai_terenkripsi RAW(2000);
BEGIN
nilai_raw := utl_i18n.string_to_raw(nilai,
'AL32UTF8');
key_raw := utl_i18n.string_to_raw(key,
'AL32UTF8');
nilai_terenkripsi := dbms_crypto.encrypt(
src => nilai_raw,
typ => dbms_crypto.des_cbc_pkcs5,
key => key_raw
);
return nilai_terenkripsi;
END ENKRIP;
Pada fungsi di atas, aku harus menerjemahkan nilai yang akan di-enkripsi beserta key-nya ke dalam tipe data RAW, karena fungsi DBMS_CRYPT.ENCRYPT hanya menerima data dalam format RAW. Contoh di atas menggunakan algoritma enkripsi DES. Berikut ini adalah fungsi yang melakukan decrypt:
create or replace FUNCTION DEKRIP
( nilai IN raw, key IN VARCHAR2
) RETURN VARCHAR2 AS
nilai_raw RAW(2000);
key_raw RAW(2000);
nilai_dekrip RAW(2000);
BEGIN
key_raw := utl_i18n.string_to_raw(key,
'AL32UTF8');
nilai_dekrip := dbms_crypto.decrypt(
src => nilai,
typ => dbms_crypto.des_cbc_pkcs5,
key => key_raw
);
return utl_i18n.raw_to_nchar(nilai_dekrip,
'AL32UTF8');
END DEKRIP;
Sebagai contoh, aku melakukan enkripsi data VARCHAR2 ‘JOCKI HENDRY’ dengan key ‘testtesttest’:
select enkrip('JOCKI HENDRY', 'testtesttest') from dual;
yang menghasilkan:
BEB9B507432B91E116EC3F07364E38C5
Hasil decrypt-nya di dapat dengan:
select dekrip('BEB9B507432B91E116EC3F07364E38C5', 'testtesttest') from dual;