Belajar Firewall (1)

Berikut adalah contoh script penggunaan iptables untuk pengamanan komputer atau biasa disebut firewall. Contoh kasusnya adalah penggunaan firewall pada personal pc.

Pada prinsipnya iptables mengenal 3 chain yaitu ;

  • INPUT
    • Chain ini berhubungan dengan paket yang masuk ke pc, secara default dalam kasus ini rulenya adalah drop.
  • OUTPUT
    • Chain ini berhubungan dengan paket yang keluar dari pc, dalam kasus ini secara default rulenya adalah accept.
  • FORWARD
    • Chain ini biasanya dipakai jika pc berfungsi sebagai router, namun dalam kasus kali ini secara default rulenya adalah drop.

Pendekatan :

  • Blok semua INPUT dan FORWARD
  • Ijinkan semua OUTPUT
  • Ijinkan INPUT untuk paket ICMP (ping request) tetapi dengan batasan, hal ini dilakukan untuk menghindari ping flood
  • Buat file dengan nama firewall.sh

lina:~# vim firewall.sh

#!/bin/sh

IPT=”/sbin/iptables”

$IPT -F
$IPT -F INPUT
$IPT -F OUTPUT
$IPT -F FORWARD
$IPT -X

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

# Ijinkan koneksi dari mesin lokal (lo)
$IPT -A INPUT -i lo -j ACCEPT

# state rules
$IPT -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
#$IPT -A FORWARD -m state –state RELATED,ESTABLISHED -j ACCEPT

# Buat chain baru denga nama BadFlags
# paket BadFlags akan di drop tanpa memberikan alert pada pengirim
$IPT -N BadFlags
$IPT -A BadFlags -m limit –limit 10/minute -j LOG –log-prefix “BadFlags : ”
$IPT -A BadFlags -j DROP

# Listing BadFlags
$IPT -A INPUT -p tcp –tcp-flags ACK,FIN FIN -j BadFlags
$IPT -A INPUT -p tcp –tcp-flags ACK,PSH PSH -j BadFlags
$IPT -A INPUT -p tcp –tcp-flags ACK,URG URG -j BadFlags
$IPT -A INPUT -p tcp –tcp-flags FIN,RST FIN,RST -j BadFlags
$IPT -A INPUT -p tcp –tcp-flags SYN,FIN SYN,FIN -j BadFlags
$IPT -A INPUT -p tcp –tcp-flags SYN,RST SYN,RST -j BadFlags
$IPT -A INPUT -p tcp –tcp-flags ALL ALL -j BadFlags
$IPT -A INPUT -p tcp –tcp-flags ALL NONE -j BadFlags
$IPT -A INPUT -p tcp –tcp-flags ALL FIN,PSH,URG -j BadFlags
$IPT -A INPUT -p tcp –tcp-flags ALL SYN,FIN,PSH,URG -j BadFlags
$IPT -A INPUT -p tcp –tcp-flags ALL SYN,RST,ACK,FIN,URG -j BadFlags

# Blokir semua trafik paket ICMP yg menuju ke lokal mesin tapi ijinkan ping.
# ICMP Tipe 0 –> echo reply
# ICMP Tipe 3 –> destination unreachable
# ICMP Tipe 11 –> time exceeded
# ICMP Tipe 8 –> Echo, avoid ping flood

$IPT -A INPUT -p icmp –icmp-type 0 -j ACCEPT
$IPT -A INPUT -p icmp –icmp-type 3 -j ACCEPT
$IPT -A INPUT -p icmp –icmp-type 11 -j ACCEPT
$IPT -A INPUT -p icmp –icmp-type 8 -m limit –limit 1/second -j ACCEPT

# Ping di REJECT dengan pesan
#$IPT -A INPUT -p icmp –icmp-type 8 -m limit –limit 1/second -j REJECT –reject-with icmp-host-prohibited

  • Ubah permission file firewall.sh sehingga menjadi executable

lina:~# chmod +x /root/firewall.sh

  • Agar firewall up setip komputer reboot, tambahkan script command up pada interface

lina:~# vim /etc/network/interfaces

# The primary network interface
auto eth0
iface eth0 inet static
address 10.11.12.232
netmask 255.255.255.0
network 10.11.12.0
broadcast 10.11.12.255
gateway 10.11.12.1
up command /root/firewall.sh

  • Reboot komputer dan tes dengan ping atau menggunakan nmap.

Leave a Reply

Your email address will not be published. Required fields are marked *