Line 68: Line 68:
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
</syntaxhighlight>→ Supaya koneksi yang sudah terbentuk tidak diblokir.
</syntaxhighlight>→ Supaya koneksi yang sudah terbentuk tidak diblokir.
== Sintaks dasar perintah IPTables ==
Format:<syntaxhighlight lang="shell">
iptables [tabel] [aksi] [parameter] -j [target]
</syntaxhighlight>Contoh : <syntaxhighlight lang="shell">
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
</syntaxhighlight>Keterangan:
* <code>-A</code> = append (tambahkan rule)
* <code>INPUT</code> = chain
* <code>-p tcp</code> = protokol
* <code>--dport 22</code> = port 22
* <code>-j ACCEPT</code> = tindakan
Aksi lain:
* <code>-I</code> = insert di awal
* <code>-D</code> = delete
* <code>-F</code> = flush (hapus semua rule)
* <code>-L</code> = list rules
== Konfigurasi Firewall Dasar ==
=== Contoh 1 - Izinkan SSH (port 22) ===
<syntaxhighlight lang="shell">
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
</syntaxhighlight>
=== Contoh 2 - Izinkan trafik yang sudah established ===
<syntaxhighlight lang="shell">
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
</syntaxhighlight>
=== Contoh 3 - Izinkan loopback ===
<syntaxhighlight lang="shell">
iptables -A INPUT -i lo -j ACCEPT
</syntaxhighlight>
=== Contoh 4 - Drop semua input selain yang diizinkan ===
<syntaxhighlight lang="shell" line="1">
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
</syntaxhighlight>
== Save dan Restore IPTables ==
Debian tidak menyimpan rules secara otomatis.
Gunakan paket:<syntaxhighlight lang="shell">
sudo apt install iptables-persistent
</syntaxhighlight>Lalu simpan:<syntaxhighlight lang="shell">
sudo netfilter-persistent save
</syntaxhighlight>Maka setiap server restart rule IPTables akan direstore otomatis

Revision as of 20:08, 31 October 2025

Apa itu IPTables?

iptables adalah firewall berbasis packet filtering yang bekerja menggunakan Netfilter di kernel Linux.

Ia mengatur lalu-lintas IPv4 (ada juga ip6tables untuk IPv6).

Walaupun Debian 12 memakai nftables secara default, iptables masih sangat penting untuk dipahami, karena:

  • Banyak server lama masih memakai iptables.
  • Banyak software firewall (fail2ban, docker versi lama, kube-proxy lama) masih berinteraksi dengan iptables.
  • Banyak job IT meminta kemampuan iptables.

Arsitektur Dasar (Tables, Chains, Rules)

Tabel (Tables)

Tabel adalah kategori besar untuk aturan firewall.

Tabel utama:

  • filter → untuk filtering / menyaring paket Chain: INPUT, OUTPUT, FORWARD
  • nat → untuk NAT (SNAT/MASQUERADE & DNAT/PORT FORWARD) Chain: PREROUTING, POSTROUTING, OUTPUT
  • mangle → modifikasi header paket (QoS, TTL, dsb)
  • raw → pengecualian dari connection tracking
  • security → SELinux (jarang dipakai di Debian

Untuk awal-awal kita fokus pada filter dan nat dulu.

Chain (rantai proses firewall)

Chain Fungsi
INPUT Paket menuju server lokal
OUTPUT Paket yang keluar dari server
FORWARD Paket yang lewat server (jika server jadi router)
PREROUTING DNAT, port-forwarding sebelum routing
POSTROUTING SNAT/MASQUERADE setelah routing

Rules

Rule adalah aturan seperti:

  • sumber/dst address
  • source/dst port
  • protokol
  • action (ACCEPT, DROP, REJECT)

Konsep penting: Connection Tracking

iptables bersifat stateful, artinya firewall tahu keadaan koneksi.

State umum:

  • NEW — koneksi baru
  • ESTABLISHED — koneksi yang sudah berjalan
  • RELATED — koneksi tambahan (FTP, ICMP error)
  • INVALID — paket rusak/tidak sesuai

Contoh rule penting:

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

→ Supaya koneksi yang sudah terbentuk tidak diblokir.

Sintaks dasar perintah IPTables

Format:

iptables [tabel] [aksi] [parameter] -j [target]

Contoh :

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Keterangan:

  • -A = append (tambahkan rule)
  • INPUT = chain
  • -p tcp = protokol
  • --dport 22 = port 22
  • -j ACCEPT = tindakan

Aksi lain:

  • -I = insert di awal
  • -D = delete
  • -F = flush (hapus semua rule)
  • -L = list rules

Konfigurasi Firewall Dasar

Contoh 1 - Izinkan SSH (port 22)

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Contoh 2 - Izinkan trafik yang sudah established

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Contoh 3 - Izinkan loopback

iptables -A INPUT -i lo -j ACCEPT

Contoh 4 - Drop semua input selain yang diizinkan

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

Save dan Restore IPTables

Debian tidak menyimpan rules secara otomatis.

Gunakan paket:

sudo apt install iptables-persistent

Lalu simpan:

sudo netfilter-persistent save

Maka setiap server restart rule IPTables akan direstore otomatis