Iptables 1.3.5 string match support

Untuk menggunakan iptables yang support string match, maka kernel Linux yang dipakai harus support juga. Silakan diperiksa (pada kernel 2.6.23.9) di Networking —> Networking options —> Network packet filtering framework (Netfilter) —> Core Netfilter Configuration —> string match support) atau CONFIG_NETFILTER_XT_MATCH_STRING=y (atau =m jika sebagai modul) di file .config. Download filesnya disini:

Nah, untuk mengetest iptables sudah support string atau belum tinggal dicoba diketik: iptables -m string seharusnya muncul kira-kira seperti ini:

You must specify `–string’ or `–hex-string’

Kalau muncul seperti ini berarti masih belum disupport:

Couldn’t load match `string’:/lib/iptables/libipt_string.so: cannot open shared object file: No such file or directory

Sekarang untuk mencobanya bikin sebuah rule yang sederhana, misalnya semua paket yang masuk yang mengandung string ‘coba’ akan kita log:

iptables -A INPUT -m string --algo kmp --string "coba" -j LOG

Kemudian buat suatu program yang listen di sembarang port, misalnya disini port 6789, dengan netcat:

nc -l -p 6789

Buka terminal satu lagi kemudian coba telnet ke localhost port 6789:

telnet localhost 6789
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
ini baris satu
coba
quit
^]quit

telnet> quit
Connection closed.

Kemudian coba lihat di file syslog, maka akan terdapat entry kira-kira seperti ini:

Dec 11 14:56:25 palestine kernel: IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 src=127.0.0.1 DST=127.0.0.1 LEN=58 TOS=0x10 PREC=0x00 TTL=64 ID=29877 DF PROTO=TCP SPT=62763 DPT=6789 WINDOW=65 RES=0x00 ACK PSH URGP=0

Berati iptables dengan string match support sudah sukses. Jangan lupa, rule diatas hanya mengelog saja, tinggal diubah untuk kebutuhan yang sesuai :)

Leave a Reply

Your email address will not be published. Required fields are marked *