dasar-dasar pemahaman penggunaan perintah program iptables
DESCRIPTION
Dasar-dasar Pemahaman Penggunaan Perintah Program IptablesTRANSCRIPT
-
5/25/2018 Dasar-dasar Pemahaman Penggunaan Perintah Program Iptables
1/6
DASAR-DASAR PEMAHAMAN PENGGUNAAN PERINTAH PROGRAM IPTABLES
IPTables adalah paket aplikasi (program berbasis Linux) yang saat ini sudah menjadi platform untuk
membuat (mensetup) firewall hampir di kebanyakan distro Linux. Dengan menggunakan IPtables seorang
pengguna / admin jaringan bisa mengatur lalulintas paket data yang keluar masuk pada router atau serveryang menjadi gateway (pintu gerbang) antara jaringan perusahaan/lokal (LAN) dengan jaringan publik
(WAN/internet).
Mekanismenya adalah dengan cara mendefinisikan aturan-aturan (rules) tertentu, dimana aturan-2 itu
dikelompokkan dalam wadah tabel-tabel dan chains yang disetting (dikonfigurasi) menggunakan perintah
baris "iptables .... "
Para praktisi Linux, IT Support maupun network administrator yang berkecimpung dalam manajemen server
berbasis Linux pasti mutlak harus tahu, mengerti dan bisa menggunakan program IPTables ini dengan baik.Begitupun anak-anak TKJ yang notabene akan menjadi calon-2 IT Networking Support di masa depan.
Berusahalah untuk mempelajari dan memahaminya dengan baik. Maka kita akan bisa menggunakannya
untuk membuat firewall yang 'powerful' and 'stateful' pada server berbasis Linux.
Jika anda ingin belajar bagaimana mekanisme/tata cara penggunaan perintah program IPTables, dibawah inidipaparkan dasar-dasar pemahaman dan penggunaan program IPTables. Artikel ini saya adaptasi dari posting
sdr. Asif Maulana - Siswa kelas XI TKJ 2 SMK Informatika Wonosobo. Selamat menyimak paparanselanjutnya. Semoga bermanfaat.
DASAR-DASAR PENGGUNAAN PERINTAH IPTABLES:
-A : appendPerintah ini menambahkan aturan pada akhir aturan-aturan yang telah dibuat
contoh : iptables -A INPUT
-D : delete
Perintah ini menghapus satu baris aturan yang telah dibuat. Dilakukan dengan cara menyebutkan secara
lengkap perintah yang ingin dihapus atau dengan menyebutkan nomor baris dimana perintah akan dihapus.Contoh :
iptablesD INPUT 1
iptablesDs 192.168.1.3
-R : replace
Penggunaannya sama seperti delete, tetapi command ini menggantinya dengan entry yang baru pada urutanyang sama.
Contoh :
iptablesR INPUT 2s 192.168.1.3j DROP
-I : insert
Memasukkan aturan baru pada suatu baris aturan yang penempatannya sesuai dengan perintah yang kitamasukkan dan aturan awal yang menempati baris tersebut akan digeser ke bawah. Demikian pula baris-baris
selanjutnya.
Contoh :
iptablesI INPUT 3s 192.168.1.3j ACCEPT
-L : list
Perintah ini menampilkan semua aturan yang telah kita buat.Contoh : iptablest natL
-F : flushPerintah inimenghapus semua aturan yang telah dibuat.
Contoh :
iptablesF OUTPUT
-N : new-chain
Perintah tersebut akan membuat suatu kolom tabel baru.Contoh :
-
5/25/2018 Dasar-dasar Pemahaman Penggunaan Perintah Program Iptables
2/6
iptablesN eth0-IN
-X : delete-chain
Perintah ini akan menghapus satu kolom tables yang dibuat dengan perintah -N. Agar perintah di atasberhasil, tidak boleh ada aturan lain yang mengacu kepada kolom tersebut.
Contoh :
iptablesx eth0-IN
-P : policyPerintah ini membuat kebijakan default pada sebuah tabel. Sehingga jika ada sebuah paket yang tidak
memenuhi aturan pada baris-baris yang telah didefinisikan, maka paket akan diperlakukan sesuai dengankebijakan default ini.
Contoh :
iptablesP INPUT DROP
-E : rename-chain
Perintah ini akan merubah nama suatu kolom tabel. Kolom yang dibuat denganNContoh :
iptablesE eth0_IN eth0_masuk
-h : helpmenampilkan help/bantuan pada iptables
IPTABLES PARAMETER
-p : protocolDigunakan untuk mengecek tipe protokol tertentu. Contoh protokol yang umum adalah TCP, UDP, ICMP
dan ALL. Daftar protokol bisa dilihat pada /etc/protocols. Tanda ! bisa digunakan, misal kita menghendaki
semua protokol kecuali icmp, maka kita bisa menuliskan -p ! icmp yang berarti semua kecuali icmp.Contoh :
iptables -A INPUT -p tcp
iptables -A INPUT -p ! tcp
-s : source
Digunakan untuk mencocokkan paket berdasarkan alamat IP asal/sumber. Alamat di sini bisa berberntuk
alamat tunggal seperti 192.168.1.1, atau suatu alamat network menggunakan netmask misal192.168.1.0/255.255.255.0, atau bisa juga ditulis 192.168.1.0/24 yang artinya semua alamat 192.168.1.x.
Kita juga bisa menggunakan inversi.
Contoh :iptables -A INPUT -s 192.168.1.3
-d : destinationDigunakan untuk mecocokkan paket berdasarkan alamat tujuan. Penggunaannya sama dengan s
contoh : iptables -A INPUT -s 192.168.1.3
-j : jump
berguna untuk menentukan nasib paket, apakah paket akan diterima (ACCEPT), ditolak (DROP),
dikembalikan (RETURN), dllcontoh :
iptables -A INPUT -j DROP
-i : in-interface
berguna untuk mencocokkan paket berdasarkan interface di mana paket datang. Match ini hanya berlakupada chain INPUT, FORWARDcontoh :
iptables -A INPUT -i eth0
-o : out-interface
Berfungsi untuk mencocokkan paket berdasarkan interface di mana paket keluar. Penggunannya sama
dengan -i. Berlaku untuk chain OUTPUT, FORWARD
contoh :
-
5/25/2018 Dasar-dasar Pemahaman Penggunaan Perintah Program Iptables
3/6
iptables -A OUTPUT -o eth1IPTABLES TARGET
Target atau jump adalah perlakuan yang diberikan terhadap paket-paket yang memenuhi kriteria. Atau
sebagai penentu nasib suatu paket
ACCEPTpaket data akan diterima oleh firewall dan akan diteruskan ke tujuan dari paket tersebut
contoh :
iptables -A INPUT -p tcp -dport 80 -j ACCEPT
DROP
akan membuang setiap paket yang diterima tanpa mengirimkan pesan ke IP pengirim paket
contoh :iptables -A INPUT -p tcp -dport 80 -j DROP
REJECTakan membuang paket yang diterima tapi akan mengirimkan pesan ke IP pengirim paket
contoh :
iptables -A INPUT -p tcp -dport 80 -j REJECT
RETURN
akan menolak setiap paket yang diterima tapi firewall akan mengirimkan pesan ICMP errror kepada pengirim
paket, defaultnya berupa port-unreachable pesan dapat dirubah misal icmp-net-unreachable, icmp-host-unreachable, icmp-proto-unreachable, icmp-net-prohibited, dll
contoh :iptables -A INPUT -p tcp -dport 80 -j REJECTreject-with icmp-net-unreachable
LOG Target
Ada beberapa option yang bisa digunakan bersamaan dengan target ini. Yang pertama adalah yang digunakanuntuk menentukan tingkat log. Tingkatan log yang bisa digunakan adalah debug, info, notice, warning, err,
crit, alert dan emerg.Yang kedua adalah -j LOGlog-prefix yang digunakan untuk memberikan string yang
tertulis pada awalan log, sehingga memudahkan pembacaan log tersebut.Contoh :iptablesA FORWARDp tcpj LOGlog-level debug
iptablesA INPUTp tcpj LOGlog-prefix INPUT Packets
SNAT Target
Target ini berguna untuk melakukan perubahan alamat asal dari paket (Source Network Address
Translation). Target ini berlaku untuk tabel nat pada kolom POSTROUTING, dan hanya di sinilah SNATbisa dilakukan. Jika paket pertama dari sebuah koneksi mengalami SNAT, maka paket-paket berikutnya
dalam koneksi tersebut juga akan mengalami hal yang sama.
Contoh :
iptablest natA POSTROUTINGo eth0j SNATto-source 194.236.50.155-194.236.50.160:1024-32000
DNAT TargetBerkebalikan dengan SNAT, DNAT digunakan untuk melakukan translasi field alamat tujuan (Destination
Network Address Translation) pada header dari paket-paket yang memenuhi kriteria match. DNAT hanya
bekerja untuk tabel nat pada chain PREROUTING dan OUTPUT atau chain buatan yang dipanggil olehkedua chain tersebut.
Contoh :
iptablest natA PREROUTINGp tcpd 15.45.23.67dport 80j DNATto-destination 192.168.0.2
MASQUERADE TargetSecara umum, target MASQUERADE bekerja dengan cara yang hampir sama seperti target SNAT, tetapitarget ini tidak memerlukan optionto-source. MASQUERADE memang didesain untuk bekerja pada
komputer dengan koneksi yang tidak tetap seperti dial-up atau DHCP yang akan memberi pada kita nomor IP
yang berubah-ubah.Seperti halnya pada SNAT, target ini hanya bekerja untuk tabel nat pada chain POSTROUTING.
Contoh :
iptablest natA POSTROUTINGo eth0 -dport 80j MASQUERADE
-
5/25/2018 Dasar-dasar Pemahaman Penggunaan Perintah Program Iptables
4/6
REDIRECT TargetTarget REDIRECT digunakan untuk mengalihkan/membelokkan jurusan (redirect) paket ke mesin itu
sendiri. Target ini umumnya digunakan untuk mengarahkan paket yang menuju suatu port tertentu untuk
memasuki suatu aplikasi proxy, lebih jauh lagi hal ini sangat berguna untuk membangun sebuah sistemjaringan yang menggunakan sistem (mekanisme) transparent proxy. Sebagai contoh kita ingin mengalihkan
semua koneksi yang menuju port http untuk memasuki aplikasi http proxy seperti Squid. Target ini hanya
bekerja untuk tabel nat pada chain PREROUTING dan OUTPUT atau pada chain buatan yang dipanggil dari
kedua chain tersebut.Contoh :iptables -t nat -A PREROUTING -i eth1 -p tcpdport 80 -j REDIRECTto-port 3128
iptables -t nat -A PREROUTING -p tcp -d 0/0dport 80 -j REDIRECTto-port 8080
Maksud dari perintah diatas adalah tambahkan aturan pada tables firewall yaitu:
Belokkan semua paket data (koneksi) yang berasal dari interface eth1 dengan protocol TCP no port 80 keport no 3128 (dimana no port 3128 merupakan no port yang sudah ditentukan pada aplikasi Proxy Squid)
Blocking IP atau MAC Address Menggunakan iptables
Para mimin (baca: administrator) jaringan pasti pernah dijengkelkan oleh ulah user menyebalkan dan inginmenendang user tersebut keluar dari jaringan dengan cara halus. Block IP atau MAC adress dari user
tersebut adalah cara halus yang saya sukai untuk menangani user-user menyabalkan seperti itu. Tools yang
saya gunakan adalah iptables (bila router yang kita gunakan adalah linux). Perintahnya pun sederhana,
cukup:
1 iptables -I FORWARD -s -j DROP
atau
1 iptables -I FORWARD -m mac --mac-source -j DROP
Masalahnya adalah bila harus menuliskan perintah block tersebut berkali akan menjadi sebuah pekerjaan
yang sangat menyebalkan. Itulah sebabnya akhirnya saya membuat script sederhana yang dapat memblock IP
atau MAC Address user dan dapat juga memblock alamat server yang menjadi masalah (misalnya sebuahalamat server yang diakses oleh user tersebut). Script ini saya digunakan di sebuah server bebasis centos 5
yang berperan sebagai router dan NAT server.
Berikut isi dari script tersebut:
-
5/25/2018 Dasar-dasar Pemahaman Penggunaan Perintah Program Iptables
5/6
Masukkan ip yang ingin di block ke dalam array blockSource atau array blockDestination, pisahkan antar ip
dengan spasi.
Untuk memblock mac address, masukkan mac address ke dalam array blockSourceMac, pisahkan antar mac
address dengan spasi.
Setelah itu simpan file (misal: block.sh), ubah permissionnya menjadi executable (chmod +x block.sh) danjalankan file tersebut (./block.sh).
Selesai, user menyebalkan telah dienyahkan jadi jaringan!
Contoh Lain
#!/bin/bash
# Flush semua aturan dalam iptables pada tabel filter
iptables -F
iptables -X
# ijinkan koneksi ssh melalui tcp port 22
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# ijinkan semua akses masuk melalui loop back interface (localhost)
iptables -A INPUT -i lo -j ACCEPT
# ijinkan semua akses masuk yang sifatnya established dan related connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# ijinkan packet icmp (ping, traceroute, dll)
iptables -A INPUT -p icmp -j ACCEPT
# ijinkan service http di akses menggunakan port 80
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# ijinkan service https di akses menggunakan port 443
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Block semua packet masuk dan packet fowarding yang tidak ada dalam list diatas,
ijinkan semua packet keluar
iptables -P INPUT DROP
-
5/25/2018 Dasar-dasar Pemahaman Penggunaan Perintah Program Iptables
6/6
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# simpan setting iptables
/usr/libexec/iptables.init save
# List rules
iptables -L -v
Simpan file diatas (misal: firewall.sh) lalu buat permissionnya menjadi executable (misal : chmod 700
firewall.sh ). Untuk merubah setting firewall cukup eksekusi file tersebut (misal: ./firewall.sh). Pastikan
anda punya hak akses root ketika mengeksekusi file tersebut.
Rubahlah script diatas sesuai kebutuhan. Dalam script tersebut saya hanya mengijinkan akses melalui
localhost, icmp, port 80, port 443 dan port 22.