Bismillah,

Firewall IPTABLES saat ini sudah jarang di pakai, namun disini saya menggunakan IPTABLES untuk memblokir akses dari luar ke Laptop, dan mengizinkan akses dari Laptop ke Internet. Konfigurasi ini di tulis dengan script sederhana, yang akan saya jelaskan sedikit makna nya.

Adapun untuk penjelasan yang lebih lanjut, bisa melihat toturial IPTABLES di sini

Linux yang saya gunakan adalah Linux Mint 19. Berikut ini script IPTABLES nya:

#!/bin/bash
echo "jalankan firewall"

IPTABLES=/sbin/iptables

$IPTABLES -F
$IPTABLES -X

#Set default policies
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P INPUT DROP

#Accept localhost
$IPTABLES -A INPUT -i lo -j ACCEPT

$IPTABLES -I INPUT 1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

echo
echo "iptables firewall is up `date`"

Berikut ini penjelasan ringkas nya:

$IPTABLES -F
$IPTABLES -X

Membersihkan Perintah IPTABLES sebelumnya, jika ada.

$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P INPUT DROP

Koneksi Masuk dan Forward di Tolak, Koneksi Keluar di izinkan

$IPTABLES -A INPUT -i lo -j ACCEPT

Izinkan koneksi dari dan ke Localhost

$IPTABLES -I INPUT 1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Saat koneksi keluar, paket yang datang dari luar memiliki penanda ESTABLISHED, yang berarti paket tersebut adalah balasan dari server yang dituju, maka izin kan paket tersebut Masuk.

Sekian penjelasan makna nya. File script tersebut saya simpan di:

/home/muntaza/bin/iptables_mint.sh

Kemudian, agar tiap booting firewall ini aktif, kita perlu mengkonfigurasi modul rc-local di systemd. Berikut langkahnya:

Edit file

$ vim /etc/systemd/system/rc-local.service

Lalu isi file tersebut adalah:

[Unit]
 Description=/etc/rc.local Compatibility
 ConditionPathExists=/etc/rc.local

[Service]
 Type=forking
 ExecStart=/etc/rc.local start
 TimeoutSec=0
 RemainAfterExit=yes

[Install]
 WantedBy=mutli-user.target

Buat file /etc/rc.local yang isinya:

#!/bin/bash

/home/muntaza/bin/iptables_mint.sh

Lalu jadikan file tersebut executable:

$ sudo chmod +x /etc/rc.local

Aktifkan modul rc-local dan cek hasilnya:

$ sudo systemctl stop rc-local
$ sudo systemctl start rc-local
$ sudo systemctl enable rc-local
$ sudo systemctl status rc-local
● rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/etc/systemd/system/rc-local.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/rc-local.service.d
           └─debian.conf
   Active: active (exited) since Sun 2019-12-01 12:53:09 WITA; 20s ago
    Tasks: 0 (limit: 2127)
   CGroup: /system.slice/rc-local.service

Dec 01 12:53:09 E202SA systemd[1]: Starting /etc/rc.local Compatibility...
Dec 01 12:53:09 E202SA rc.local[8568]: jalankan firewall
Dec 01 12:53:09 E202SA rc.local[8568]: iptables firewall is up Sun Dec  1 12:53:09 WITA 2019
Dec 01 12:53:09 E202SA systemd[1]: Started /etc/rc.local Compatibility.


$ sudo iptables -L -v

Chain INPUT (policy DROP 2 packets, 348 bytes)
 pkts bytes target     prot opt in     out     source               destination
   18  3162 ACCEPT     all  --  any    any     anywhere             anywhere             ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 20 packets, 17275 bytes)
 pkts bytes target     prot opt in     out     source               destination

Semoga bermanfaat.

Alhamdulillah