Tutorial Iptables: Mengamankan VPS dengan Firewall Linux

Tutorial Iptables: Mengamankan VPS dengan Firewall Linux

Sedang mencari tutorial iptables yang lengkap untuk membantu mengelola VPS? Nah, Anda sudah membaca artikel yang tepat!

Kali ini, kami akan menunjukkan cara instal iptables dan menggunakannya pada sistem Ubuntu. Anda bisa mengamankan VPS menggunakan CLI (antarmuka baris perintah) kalau sudah familiar dengan tool firewall Linux ini.

Langsung saja, ini dia tutorial iptables selengkapnya! Scroll ke bawah dan baca sampai selesai, ya.

Apa Itu Iptables?

Iptables adalah program firewall untuk Linux yang berfungsi untuk memantau traffic masuk dan keluar server menggunakan tabel. Dalam tabel ini, terdapat serangkaian aturan yang disebut chain (rantai), yang akan memfilter paket data masuk dan keluar.

Bagaimana Cara Kerja Iptables?

Ketika ada packet (paket) yang cocok dengan rule (aturan), packet akan diberi target, yang bisa berupa chain lain atau salah satu dari nilai-nilai spesial berikut:

  • ACCEPT – akan mengizinkan packet untuk diteruskan.
  • DROP – tidak mengizinkan packet diteruskan.
  • RETURN – menghentikan packet agar tidak melintasi chain dan memberitahunya untuk kembali ke chain sebelumnya.

Dalam tutorial iptables ini, kami akan menggunakan salah satu tabel default, yang disebut filter. Tabel filter ini terdiri dari tiga chain:

  • INPUT – mengontrol packet yang masuk ke server.
  • FORWARD – memfilter packet masuk yang akan diteruskan ke tempat lain.
  • OUTPUT – memfilter packet yang keluar dari server Anda.

Sebelum memulai panduan ini, pastikan Anda memiliki akses SSH root atau sudo ke machine yang menggunakan Ubuntu 16.04 atau lebih tinggi.

Anda bisa membuat koneksi melalui PuTTY (Windows) atau terminal shell (Linux, macOS). Apabila menggunakan Hostinger VPS, Anda bisa mendapatkan detail login SSH di tab Server dari hPanel.

Penting! Aturan iptables hanya berlaku untuk ipv4. Apabila ingin mengatur firewall untuk protokol ipv6, Anda perlu menggunakan ip6tables.

Cara Install Iptables Firewall Linux dan Menggunakannya

Kami akan membagi tutorial iptables ini menjadi tiga langkah. Pertama, Anda akan mempelajari cara install iptables di Ubuntu. Kedua, kami akan menunjukkan cara menentukan aturannya. Terakhir, kami akan membantu Anda melakukan perubahan tetap di iptables.

Mari mulai dari yang pertama, yaitu menginstal iptables.

1. Install Iptables

Iptables biasanya sudah terinstal di sebagian besar distribusi Linux. Namun, kalau belum ada di sistem Ubuntu/Debian Anda secara default, ikuti langkah-langkah di bawah ini:

  1. Konek ke server Anda melalui SSH. Apabila belum tahu caranya, silakan baca tutorial SSH kami.
  2. Jalankan command berikut satu per satu:
sudo apt-get update
sudo apt-get install iptables
  1. Cek status konfigurasi iptables Anda saat ini dengan menjalankan:
sudo iptables -L -v
  1. Di sini, opsi  -L digunakan untuk mencantumkan semua aturan, dan -v digunakan untuk menampilkan info dalam format yang lebih detail. Berikut adalah contoh outputnya:
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

Sekarang, firewall Linux iptables Anda sudah terinstal. Pada tahap ini, Anda bisa melihat bahwa semua chain diatur ke ACCEPT dan tidak memiliki aturan. Hal ini tidak aman, karena setiap packet bisa masuk tanpa pemfilteran.

Tenang, kami akan memberi tahu Anda cara menentukan aturan pada langkah tutorial iptables berikutnya di bawah ini.

2. Definisikan Aturan Chain

Dengan mendefinisikan aturan, artinya Anda menambahkan aturan tersebut ke dalam chain. Untuk melakukannya, Anda perlu memasukkan opsi -A (Tambahkan) tepat setelah perintah iptables, seperti ini:

sudo iptables -A

Ini akan memberi tahu iptables bahwa Anda menambahkan aturan baru ke sebuah chain. Kemudian, Anda bisa menggabungkan command dengan opsi lainnya, seperti:

  • -i (interface) – antarmuka jaringan yang traffic-nya ingin Anda filter, seperti eth0, lo, ppp0, dan lain-lain.
  • -p (protocol) – protokol jaringan tempat proses pemfilteran berlangsung. Opsi ini bisa berupa tcp, udp, udplite, icmp, sctp, icmpv6, dan seterusnya. Atau, Anda bisa mengetikkan all untuk memilih setiap protokol.
  • -s (source) – alamat tempat traffic berasal. Anda bisa menambahkan nama host atau alamat IP.
  • –dport (destination port) – nomor port tujuan suatu protokol, seperti 22 (SSH), 443 (https), dan seterusnya.
  • -j (target) – nama target (ACCEPTDROPRETURN). Anda perlu memasukkan nama target ini setiap kali membuat aturan baru.

Apabila ingin menggunakan semuanya, Anda harus menulis command dalam urutan berikut:

sudo iptables -A <chain> -i <interface> -p <protocol (tcp/udp) > -s <source> --dport <port no.>  -j <target>

Setelah memahami sintaksis dasarnya, Anda bisa mulai mengonfigurasi firewall untuk meningkatkan keamanan server. Untuk tutorial iptables ini, kami akan menggunakan chain INPUT sebagai contoh.

Mengizinkan Traffic di Localhost

Untuk mengizinkan traffic di localhost, ketik command berikut:

sudo iptables -A INPUT -i lo -j ACCEPT

Di tutorial iptables ini, kami menggunakan lo atau antarmuka loopback. Antarmuka ini digunakan untuk semua komunikasi di localhost. Command di atas akan memastikan bahwa koneksi antara database dan aplikasi web pada mesin yang sama berfungsi dengan baik.

Mengizinkan Koneksi pada Port HTTP, SSH, dan SSL

Selanjutnya, kami ingin koneksi http (port 80), https (port 443), dan ssh (port 22) berjalan seperti biasa. Untuk melakukannya, kami perlu menentukan protokol (-p) dan port yang sesuai (–dport). Anda bisa menjalankan command di bawah ini satu per satu:

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

Saatnya mengecek apakah aturan telah ditambahkan di iptables:

sudo iptables -L -v

Hasilnya akan muncul di bawahnya, yang berarti semua koneksi protokol TCP dari port yang ditentukan akan diterima:

Memfilter Packet Berdasarkan Sumber

Iptables memungkinkan Anda memfilter packet berdasarkan alamat IP atau rentang alamat IP. Anda perlu menentukannya setelah opsi -s. Sebagai contoh, untuk menerima packet dari 192.168.1.3, berikut command yang digunakan:

sudo iptables -A INPUT -s 192.168.1.3 -j ACCEPT

Anda juga bisa menolak packet dari alamat IP tertentu dengan mengganti target ACCEPT dengan DROP.

sudo iptables -A INPUT -s 192.168.1.3 -j DROP

Apabila ingin menghapus packet dari rentang alamat IP, Anda harus menggunakan opsi -m dan modul iprange. Kemudian, tentukan rentang alamat IP dengan –src-range. Ingat, rentang alamat ip dipisahkan dengan tanda hubung dan tanpa spasi, seperti ini:

sudo iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.200 -j DROP

Membuang Seluruh Traffic Lainnya

Penting untuk menggunakan target DROP bagi seluruh traffic lainnya setelah menentukan aturan –dport. Hal ini akan mencegah koneksi yang tidak sah mengakses server melalui port lain yang terbuka. Untuk melakukannya, cukup ketik:

sudo iptables -A INPUT -j DROP

Sekarang, koneksi di luar port yang ditentukan akan dihentikan.

Menghapus Aturan

Apabila ingin menghapus semua aturan dan memulai dari awal, Anda bisa menggunakan opsi -F (flush):

sudo iptables -F

Perintah ini menghapus semua aturan yang ada saat ini. Namun, untuk menghapus aturan tertentu, Anda harus menggunakan opsi -D. Pertama, Anda perlu melihat semua aturan yang ada dengan memasukkan command berikut:

sudo iptables -L --line-numbers

Anda akan mendapatkan daftar aturan dengan sejumlah angka:

Chain INPUT (policy ACCEPT)

num  target     prot opt source               destination

1    ACCEPT     all -- 192.168.0.4          anywhere
2    ACCEPT     tcp -- anywhere             anywhere tcp dpt:https
3    ACCEPT     tcp -- anywhere             anywhere tcp dpt:http
4    ACCEPT     tcp -- anywhere             anywhere tcp dpt:ssh

Untuk menghapus aturan, masukkan chain yang sesuai dan nomor dari daftar. Misalnya, untuk tutorial iptables ini, kami ingin menghilangkan aturan nomor tiga dari chain INPUT. Perintahnya akan seperti ini:

sudo iptables -D INPUT 3

Atau, kalau perlu memfilter traffic masuk saja, Anda bisa menggunakan Firewall VPS Hostinger. Pilih VPS lalu buka bagian Firewall:

bagian firewall di vps hpanel

Buat konfigurasi baru, beri nama, dan tentukan aturan traffic masuk yang Anda inginkan:

konfigurasi firewall di vps hpanel

3. Simpan Perubahan

Aturan iptables yang dibuat akan disimpan dalam memori. Artinya, Anda harus menyimpan konfigurasi iptables dalam file agar bisa dimuat lagi setelah reboot. Untuk hal ini, Anda bisa menggunakan command berikut, tergantung apakah Anda menyimpan aturan IPv4 atau IPv6:

sudo iptables-save > /etc/iptables/rules.v4
sudo iptables-save > /etc/iptables/rules.v6

Sekarang, setiap kali VPS direstart, Anda perlu memuat aturan yang tersimpan tersebut dengan perintah ini:

sudo iptables-restore < /etc/iptables/rules.v4
sudo iptables-restore < /etc/iptables/rules.v6

Apabila ingin mengotomatiskan proses pemuatan, Anda bisa menyiapkan paket iptables-persistent yang akan mengurus pemuatan aturan.

sudo apt-get install iptables-persistent

Setelah instalasi iptables, Anda akan diminta untuk menyimpan aturan saat ini. Pilih Yes untuk IPv4 dan IPv6 lalu selesaikan konfigurasinya. Proses pemuatan pun akan berjalan otomatis. Tapi ingat, Anda masih perlu menggunakan command sudo iptables-save setiap kali membuat perubahan pada iptables.

Kesimpulan

Iptables adalah program firewall canggih yang bisa Anda gunakan untuk mengamankan server Linux atau VPS. Kerennya, Anda bisa menentukan berbagai aturan berdasarkan preferensi.

Melalui tutorial iptables ini, Anda sudah mempelajari cara menginstal dan menggunakan tool tersebut. Semoga Anda bisa mencobanya tanpa masalah untuk mengatur rangkaian aturan guna memfilter packet masuk dan keluar.

Selamat mencoba dan semoga berhasil!

Author
Penulis

Faradilla A.

Faradilla, yang lebih akrab disapa Ninda, adalah Content Marketing Specialist di Hostinger. Ia suka mengikuti tren teknologi, digital marketing, dan belajar bahasa. Melalui tutorial Hostinger ini, Ninda ingin berbagi informasi dan membantu pembaca menyelesaikan masalah yang dialami. Kenali Ninda lebih dekat di LinkedIn.