Pengertian, Fungsi dan Cara Menggunakan Iptables
Pengertian Iptables
Iptables adalah salah satu tools firewall pada sistem operasi Linux. Fungsi iptables adalah mengamankan jaringan dengan melakukan penyaringan traffik pada server.
Dengan iptables dapat mengatur lalu lintas jaringan, termasuk mengizinkan atau memblokir koneksi yang masuk, keluar, atau sekedar melewati server. Pada iptables bisa membuat aturan pada server untuk mengelola jenis paket yang dapat diterima, mengatur traffik berdasarkan asal dan tujuan data, mengelola port, dll.
Iptables bekerja dengan membandingkan lalu lintas jaringan dengan serangkaian aturan yang telah dibuat. Jadi, semua paket dalam lalu lintas jaringan akan dicek. Dalam pengaturan paket, iptables memiliki beberapa tabel yang berfungsi untuk menentukan arah putaran data. Setiap tabel tersebut memiliki rules atau kumpulan aturan yang disebut chain.
Pertama, tabel FILTER. Tabel ini digunakan untuk menyaring paket yang masuk, keluar, ataupun yang hanya lewat. Caranya. dengan menggunakan beberapa aturan, yaitu :
- ACCEPT : Menerima paket yang masuk.
- REJECT : Menolak atau Memblokir paket yang masuk.
- DROP : Memutuskan koneksi paket.
- LOG : Mencatat paket.
Tabel FILTER memiliki tiga chain, yaitu :
- INPUT : Chain ini menangani semua paket yang masuk ke server.
- OUTPUT : Chain ini menangani semua paket yang keluar dari server.
- FORWARD : Chain ini menangani paket yang diteruskan melalui server.
Kedua, tabel NAT (Network Address Translation). Tabel ini digunakan untuk mengubah alamat asal tujuan dari sebuah paket. Ada dua chain pada tabel NAT :
- PRE-ROUTING (dstnat) : Mengubah destination address pada sebuah paket data.
- POST-ROUTING (srcnat) : Mengubah source address dari sebuah paket data.
Ketiga, tabel MANGLE. Tabel ini digunakan untuk melakukan penghalusan pada proses pengaturan paket dan memiliki kemampuan untuk menggunakan semua chain yang ada pada IPTABLES di atas.
Cara Menggunakan Iptables
Sebelum mengikuti tutorial cara menggunakan iptables, pastikan memiliki akses root ke server. Jika sudah siap dapat langsung mengikuti tiga langkah berikut ini, yaitu :
1. Melakukan Instalasi iptables
Untuk mengecek versi iptables yang terinstall pada Linux, perlu melakukan koneksi ke server melalui SSH terlebih dulu.
Caranya, login dengan username dan password yang dapat ditemukan pada detail SSH di panel VPS. Kemudian, jalankan perintah berikut :
sudo iptables -V
Jika perintah tersebut menampilkan output versi iptables seperti gambar di bawah ini, maka iptables memang sudah terinstall pada Linux.
Maka, dapat langsung melanjutkan panduan ini ke langkah selanjutnya.
Namun, jika outputnya berupa command not found, artinya iptables belum terinstall. Jadi, jalankan perintah berikut ini untuk menginstall iptables :
sudo apt-get update
sudo apt-get install iptables
Tunggu beberapa saat hingga proses instalasi iptables selesai dilakukan. Jika sudah berhasil, cek status konfigurasi dengan menjalankan perintah :
sudo iptables -L -v
Command -L
pada perintah diatas digunakan untuk melihat list semua aturan yang ada. Sedangkan command -v
digunakan untuk menunjukkan informasi list aturan tersebut secara detail. Contoh outputnya seperti ini :
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Iptables yang baru saja di install belum memiliki aturan apapun. Sehingga semua paket yang masuk akan diterima tanpa filter. Tentu saja hal ini masih sangat tidak aman. Tapi tenang saja disini akan menjelaskan bagaimana cara membuat rules pada iptables di langkah berikutnya.
2. Membuat Rules iptables
Rules iptables merupakan aturan untuk mengelola lalu lintas jaringan pada server. Rules ini akan ditambahkan pada suatu chain tertentu.
Iptables menggunakan perintah -A
(Append) sebagai tanda bahwa ada rules yang ditambahkan :
sudo iptables -A
Namun, perintah di atas belum bisa dijalankan karena perintah Append tidak bisa berdiri sendiri. Perintah -A
membutuhkan argumen pendukung untuk membuat suatu rules.
Berikut ini merupakan argumen yang bisa digunakan untuk membuat rules :
- -i : Interface merupakan antarmuka jaringan yang akan di filter, seperti eth0, lo, dll.
- -p : Protocol adalah protokol jaringan yang akan di cek dalam suatu rule. Misalnya tcp, udp, icmp, dll.
- -s : Source adalah alamat trafik berasal (IP address atau hostname).
- -dport : Destination Port merupakan nomor port suatu protokol, seperti 22 untuk SSH dan 80 untuk HTTP.
- -j : Jump merupakan nama target (ACCEPT, DROP, RETURN) yang dituju ketika membuat rule yang baru.
Argumen di atas tidak harus digunakan satu persatu. Sesuaikan saja dengan kebutuhan. Namun, kalau perlu digunakan semua, urutannya harus seperti ini :
sudo iptables -A <chain> -i <interface> -p <protocol (tcp/udp) > -s <source> --dport <port no.> -j <target>
Mari coba membuat rules iptables dengan syntax di atas. Sebagai contoh, di tutorial kali ini akan menambahkan rules pada chain INPUT untuk memfilter koneksi yang masuk dan mencegah koneksi yang dapat membahayakan server.
Rules iptables yang akan digunakan sebagai contoh adalah :
1. Mengaktifkan trafik pada localhost
Untuk mengizinkan trafik pada localhost, jalankan perintah berikut ini :
sudo iptables -A INPUT -i lo -j ACCEPT
Perintah di atas memastikan koneksi antara database dan aplikasi web pada localhost bisa berjalan dengan baik.
2. Mengaktifkan koneksi pada port HTTP, HTTPS dan SSH
Untuk memberikan izin akses ke port HTTP (80), HTTPS (443) dan SSH (22), jalankan perintah di bawah ini :
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Jika sudah dapat mengecek rules yang baru saja dibuat dengan perintah :
sudo iptables -L -v
Perintah tersebut akan menghasilkan output seperti gambar berikut :
Gambar di atas menunjukkan bahwa iptables akan menerima semua koneksi TCP dari port HTTP, HTTPS dan SSH.
3. Memfilter koneksi berdasarkan sumber paket
Untuk menyaring koneksi yang masuk berdasarkan IP address atau range IP address tertentu, tambahkan IP sumber paket berasal setelah perintah -s
seperti ini :
sudo iptables -A INPUT -s 192.168.1.2 -j ACCEPT
Sebaliknya, untuk memutus koneksi IP tertentu bisa menjalankan perintah DROP berikut ini :
sudo iptables -A INPUT -s 192.168.1.2 -j DROP
Selain itu bisa memutuskan koneksi dari suatu range IP address dengan menambahkan perintah -m
dan modul iprange. Kemudian, masukkan range IP address setelah perintah --src-range
.
Jangan lupa gunakan tanda pisah tanpa spasi (-) untuk memisahkan range IP Address. Untuk lebih lengkapnya, silahkan lihat perintah berikut :
sudo iptables -A INPUT -m iprange --src-range 192.168.1.130-192.168.1.180 -j DROP
Perintah di atas akan memutuskan koneksi dari range IP address 192.168.130 hingga 192.168.1.180.
4. Memutus koneksi trafik lainnya
Setelah mengizinkan koneksi masuk dari port tertentu, bagaimana cara memutuskan semua paket dari trafik diluar rules yang telah dibuat? Sebab, penting untuk mencegah koneksi asing mengakses server melalui port yang terbuka.
Caranya, jalankan perintah berikut ini :
sudo iptables -A INPUT -j DROP
5. Menghapus rules
Ada kalanya ingin menghapus semua rules untuk kembali membuat rules dari awal lagi. Untuk melakukannya, jalankan perintah Flush berikut ini :
sudo iptables -F
Selain itu bisa menghapus suatu rule secara spesifik dengan menggunakan perintah Delete atau -D
. Namun, perlu diketahui dulu nomor line dari rule yang akan dihapus. Jadi, jalankan perintah di bawah ini :
sudo iptables -L --line-numbers
Setelah dijalankan akan mendapat output yang mirip seperti ini :
Pilih rule yang akan dihapus, kemudian ingatlah chain serta nomornya. Masukkan chain beserta nomor rule pada perintah delete sebagai berikut :
sudo iptables -D [chain] [nomor rule]
Sebagai contoh ingin menghapus rule nomor 2 pada chain INPUT. Maka, perintahnya adalah :
sudo iptables -D INPUT 2
3. Menyimpan Konfigurasi iptables secara Permanen
Rules iptables yang telah dibuat di atas akan hilang ketika server direstart. Jadi, pastikan menyimpan konfigurasi iptables secara permanen dengan perintah di bawah ini :
sudo /sbin/iptables-save
Jangan lupa jalankan perintah tersebut ketika ada perubahan pada rules iptables. Misalnya, ketika ingin menghapus semua rules iptables, maka perlu menjalankan dua perintah berikut ini :
sudo iptables -F
sudo /sbin/iptables-save
Output yang akan dihasilkan adalah :