Pendahuluan
Semua sistem operasi modern dilengkapi dengan firewall – aplikasi perangkat lunak yang mengatur lalu lintas jaringan ke komputer. Firewall menciptakan penghalang antara jaringan tepercaya (seperti jaringan kantor) dan jaringan tidak tepercaya (seperti internet). Firewall bekerja dengan mendefinisikan aturan yang mengatur lalu lintas mana yang diizinkan, dan mana yang diblokir. Firewall utilitas yang dikembangkan untuk sistem Linux adalah iptables .
Dalam tutorial ini, pelajari cara menginstal iptables, mengkonfigurasi, dan menggunakan iptables di Linux.

Prasyarat
- Akun pengguna dengan sudo hak istimewa
- Akses ke jendela terminal/baris perintah (Ctrl-Alt-T, Ctrl-Alt-F2)
Cara Kerja iptables
Lalu lintas jaringan terdiri dari paket-paket. Data dipecah menjadi bagian-bagian yang lebih kecil (disebut paket), dikirim melalui jaringan, kemudian disatukan kembali. Iptables mengidentifikasi paket yang diterima dan kemudian menggunakan seperangkat aturan untuk memutuskan apa yang harus dilakukan dengan paket tersebut.
Iptables menyaring paket berdasarkan:
- Tabel: Tabel adalah file yang menggabungkan tindakan serupa. Sebuah tabel terdiri dari beberapa rantai .
- Rantai: Rantai adalah rangkaian aturan . Ketika sebuah paket diterima, iptables menemukan tabel yang sesuai, kemudian menjalankannya melalui rantai aturan sampai menemukan kecocokan.
- Aturan: Aturan adalah pernyataan yang memberi tahu sistem apa yang harus dilakukan dengan sebuah paket. Aturan dapat memblokir satu jenis paket, atau meneruskan jenis paket lainnya. Hasilnya, di mana sebuah paket dikirim, disebut target .
- Target: Target adalah keputusan tentang apa yang harus dilakukan dengan sebuah paket. Biasanya, ini untuk menerima, melepaskan, atau menolaknya (yang mengirimkan kesalahan kembali ke pengirim).
Tabel dan Rantai
Linux firewall iptables memiliki empat tabel default. Kami akan mencantumkan keempatnya bersama dengan rantai yang ada di setiap tabel.
1. Filter
Filter meja adalah yang paling sering digunakan. Ini bertindak sebagai penjaga, memutuskan siapa yang masuk dan keluar dari jaringan Anda. Ini memiliki rantai default berikut:
- Masukan – aturan dalam rantai ini mengontrol paket yang diterima oleh server.
- Keluaran – rantai ini mengontrol paket untuk lalu lintas keluar.
- Maju – kumpulan aturan ini mengontrol paket yang dirutekan melalui server.
2. Terjemahan Alamat Jaringan (NAT)
Tabel ini berisi aturan NAT (Network Address Translation) untuk merutekan paket ke jaringan yang tidak dapat diakses secara langsung. Ketika tujuan atau sumber paket harus diubah, tabel NAT digunakan. Ini mencakup rantai berikut:
- Perutean awal – rantai ini memberikan paket segera setelah server menerimanya.
- Keluaran – bekerja sama seperti rantai keluaran yang kami jelaskan di filter tabel.
- Memposting – aturan dalam rantai ini memungkinkan membuat perubahan pada paket setelah mereka meninggalkan rantai keluaran.
3. Guling
Mangle tabel menyesuaikan properti header IP dari paket. Tabel memiliki semua rantai berikut yang kami jelaskan di atas:
- Perutean sebelumnya
- Memposting
- Keluaran
- Masukan
- Maju
4. Mentah
Mentah tabel digunakan untuk mengecualikan paket dari pelacakan koneksi. Tabel mentah memiliki dua rantai yang kami sebutkan sebelumnya:
- Perutean sebelumnya
- Keluaran

5. Keamanan (Opsional)
Beberapa versi Linux juga menggunakan Keamanan tabel untuk mengelola aturan akses khusus. Tabel ini mencakup masukan, keluaran, dan maju rantai, seperti tabel filter.
Target
Target adalah apa yang terjadi setelah paket cocok dengan kriteria aturan. Tidak berhenti target tetap mencocokkan paket dengan aturan dalam rantai bahkan ketika paket cocok dengan aturan.
Dengan mengakhiri target, paket dievaluasi segera dan tidak dicocokkan dengan rantai lain. Target penghentian di iptables Linux adalah:
- Terima – aturan ini menerima paket yang datang melalui firewall iptables.
- Lepaskan – paket yang dijatuhkan tidak cocok dengan rantai selanjutnya. Ketika iptables Linux menjatuhkan koneksi masuk ke server Anda, orang yang mencoba terhubung tidak menerima kesalahan. Tampaknya mereka mencoba menyambung ke mesin yang tidak ada.
- Kembalikan – aturan ini mengirimkan paket kembali ke rantai asal sehingga Anda dapat mencocokkannya dengan aturan lain.
- Tolak – firewall iptables menolak paket dan mengirimkan kesalahan ke perangkat penghubung.
Cara Menginstal dan Mengonfigurasi Linux Firewall iptables
Menginstal Iptables Ubuntu
Iptables diinstal secara default pada sebagian besar sistem Linux. Untuk mengonfirmasi bahwa iptables telah diinstal, gunakan perintah berikut:
sudo apt-get install iptables
Contoh keluaran di Ubuntu mengonfirmasi bahwa versi terbaru iptables sudah ada:

Jika Anda ingin mempertahankan aturan firewall iptables saat Anda mem-boot ulang sistem, instal paket persisten:
sudo apt-get install iptables-persistent
Menginstal Iptables CentOS
Di CentOS 7 , iptables digantikan oleh firewalld .
Untuk menginstal iptables, pertama-tama Anda harus menghentikan firewalld. Masukkan perintah berikut:
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl mask firewalld
Perintah berhenti dan mencegah firewalld memulai saat boot, dan tidak membiarkan layanan lain memulai firewalld.

Selanjutnya, instal dan aktifkan iptables. Pertama, instal paket layanan iptables dengan perintah berikut:
sudo yum -y install iptables-services
Paket ini mempertahankan aturan Anda setelah sistem di-boot ulang. Informasi yang ditampilkan di bawah ini mengonfirmasi bahwa penginstalan telah selesai:

Masukkan perintah berikut untuk mengaktifkan dan memulai iptables di CentOS 7:
sudo systemctl enable iptables
sudo systemctl start iptables
Perintah status mengkonfirmasi status aplikasi:
sudo systemctl status iptables

Sintaks Dasar untuk Perintah dan Opsi iptables
Secara umum, perintah iptables terlihat sebagai berikut:
sudo iptables [option] CHAIN_rule [-j target]
Berikut adalah daftar beberapa opsi iptables yang umum:
-A --append
– Tambahkan aturan ke rantai (di akhir).-C --check
– Cari aturan yang cocok dengan persyaratan rantai.-D --delete
– Hapus aturan tertentu dari rantai.-F --flush
– Hapus semua aturan.-I --insert
– Tambahkan aturan ke rantai pada posisi tertentu.-L --list
– Tampilkan semua aturan dalam sebuah rantai.-N -new-chain
– Buat rantai baru.-v --verbose
– Tampilkan lebih banyak informasi saat menggunakan opsi daftar.-X --delete-chain
– Hapus rantai yang disediakan.
Iptables peka huruf besar/kecil, jadi pastikan Anda menggunakan opsi yang benar.
Konfigurasi iptables di Linux
Secara default, perintah ini memengaruhi filter meja. Jika Anda perlu menentukan tabel yang berbeda, gunakan –t
pilihan, diikuti dengan nama tabel.
Periksa Status iptables Saat Ini
Untuk melihat kumpulan aturan saat ini di server Anda, masukkan yang berikut ini di jendela terminal:
sudo iptables -L

Sistem menampilkan status rantai Anda. Output akan mencantumkan tiga rantai:
Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)
Aktifkan Lalu Lintas Loopback
Aman untuk mengizinkan lalu lintas dari sistem Anda sendiri (host lokal). Tambahkan Masukan rantai dengan memasukkan berikut ini:
sudo iptables -A INPUT -i lo -j ACCEPT
Perintah ini mengonfigurasi firewall untuk menerima lalu lintas untuk localhost (lo
) antarmuka (-i
). Sekarang apa pun yang berasal dari sistem Anda akan melewati firewall Anda. Anda perlu menyetel aturan ini untuk mengizinkan aplikasi berbicara dengan antarmuka localhost.
Izinkan Lalu Lintas di Port Tertentu
Aturan ini mengizinkan lalu lintas di port yang berbeda Anda tentukan menggunakan perintah yang tercantum di bawah ini. Port adalah titik akhir komunikasi yang ditentukan untuk jenis data tertentu.
Untuk mengizinkan lalu lintas web HTTP, masukkan perintah berikut:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Untuk mengizinkan hanya lalu lintas SSH (Secure Shell) yang masuk, masukkan berikut ini:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Untuk mengizinkan lalu lintas internet HTTPS, masukkan perintah berikut:
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Opsi berfungsi sebagai berikut:
-p
– Periksa protokol yang ditentukan (tcp ).--dport
– Tentukan port tujuan.-j jump
– Ambil tindakan yang ditentukan.
Kontrol Lalu Lintas berdasarkan Alamat IP
Gunakan perintah berikut untuk MENERIMA lalu lintas dari alamat IP tertentu.
sudo iptables -A INPUT -s 192.168.0.27 -j ACCEPT
Ganti alamat IP pada perintah dengan alamat IP yang ingin Anda izinkan.
Anda juga dapat MENGHENTIKAN lalu lintas dari alamat IP:
sudo iptables -A INPUT -s 192.168.0.27 -j DROP
Anda dapat MENOLAK lalu lintas dari berbagai alamat IP, tetapi perintahnya lebih rumit:
sudo iptables -A INPUT -m iprange --src-range 192.168.0.1-192.168.0.255 -j REJECT
Opsi iptables yang kami gunakan dalam contoh berfungsi sebagai berikut:
-m
– Cocokkan dengan opsi yang ditentukan.-iprange
– Beri tahu sistem untuk mengharapkan rentang alamat IP, bukan hanya satu.--src-range
– Mengidentifikasi kisaran alamat IP.
Menurunkan Lalu Lintas yang Tidak Diinginkan
Jika Anda mendefinisikan dport aturan firewall iptables, Anda perlu mencegah akses tidak sah dengan menjatuhkan lalu lintas apa pun yang datang melalui port lain:
sudo iptables -A INPUT -j DROP
-A
opsi menambahkan aturan baru ke rantai. Jika ada koneksi yang datang melalui port selain yang Anda tetapkan, koneksi tersebut akan diputus.
Menghapus Aturan
Anda dapat menggunakan -F
opsi untuk menghapus semua aturan firewall iptables. Metode yang lebih tepat adalah menghapus nomor baris aturan.
Pertama, buat daftar semua aturan dengan memasukkan yang berikut ini:
sudo iptables -L --line-numbers

Temukan baris aturan firewall yang ingin Anda hapus dan jalankan perintah ini:
sudo iptables -D INPUT <Number>
Ganti <Nomor> dengan nomor baris aturan aktual yang ingin Anda hapus.
Simpan Perubahan Anda
Iptables tidak menyimpan aturan yang Anda buat saat sistem di-boot ulang. Setiap kali Anda mengonfigurasi iptables di Linux, semua perubahan yang Anda buat hanya berlaku hingga restart pertama.
Untuk menyimpan aturan dalam sistem berbasis Debian, masukkan:
sudo /sbin/iptables–save
Untuk menyimpan aturan dalam sistem berbasis Red-Hat, masukkan:
sudo /sbin/service iptables save
Saat berikutnya sistem Anda dimulai, iptables akan secara otomatis memuat ulang aturan firewall.