OpenBSD PF Firewall untuk terima Koneksi hanya dari IP Indonesia

Bismillah

Disini kembali saya mengupdate kembali tulisan saya yang lalu tentang PF Firewall dengan OpenBSD; yang mana hal ini bertujuan agar saya tidak lupa cara mensetting PF ini he…he..

Ada hal penting yang menurut saya bisa dilakukan untuk meningkatkan security pada mesin firewall; yaitu hanya mengizinkan blok IP dari Indonesia yang mengakses ke server kita. Apakah berpengaruh pada layanan online kita? Tergantung. Server kami yang saya sebagai administrator jaringannya hanya melayani pengguna dari Indonesia; mengapa saya harus buka akses ke seluruh Dunia… he.. he…

Untuk Pengguna PC/Laptop:
Tidak ada masalah; Insya Allah; karena IP Publik ISP di Indonesia ini sudah terdaftar pada blok IP yang di definisikan

Untuk pengguna Android:
Beberapa aplikasi; misalnya Opera Mini yang koneksinya melalui proxi tidak bisa koneksi ke server kami. Jadi hanya koneksi langsung dengan browser bawaan Android atau Google Chrome atau Opera Browser yang di terima server kami

Saya mengambil blok IP untuk wilayah indonesia di website ini
http://www.ipdeny.com/ipblocks/

OK; langsung ke konfigurasi PF yaitu isi file pf.conf

#	$Id: pf.conf_gateway,v 1.9 2015/01/05 05:37:27 muntaza Exp $
#	$OpenBSD: pf.conf,v 1.53 2014/01/25 10:28:36 dtucker Exp $

# macros
ext_if = "axe0"
int_if = "axe1"

server = "192.168.0.3"
tcp_services = "https"

laptop_admin = "192.168.0.1"
local = "ssh"

# options
set skip on lo

# match rules
match out on $ext_if inet from $server to any nat-to $ext_if:0

# filter rules
block return	# block stateless traffic

table <abusive_hosts> persist
block in quick from <abusive_hosts>

table <ip_indonesia> persist file "/etc/ip_indonesia"
 
pass in on $ext_if inet proto tcp from <ip_indonesia> to $ext_if \
    port $tcp_services rdr-to $server port $tcp_services \
    flags S/SA synproxy state \
    (max-src-conn 100, max-src-conn-rate 15/5, overload <abusive_hosts> flush)

pass out on $int_if inet proto tcp to $server \
    port $tcp_services


pass in on $int_if inet proto tcp from $laptop_admin to $int_if \
    port $local

pass out on $int_if inet proto tcp from $int_if to $laptop_admin \
    port $local


block in quick from urpf-failed to any	# use with care

# By default, do not permit remote connections to X11
block return in on ! lo0 proto tcp to port 6000:6010

Perbadaan pada tulisan saya sebelumnya adalah adanya
setting ini:

table <ip_indonesia> persist file "/etc/ip_indonesia"
 
pass in on $ext_if inet proto tcp from <ip_indonesia> to $ext_if \

yang bermakna bahwa hanya blok IP yang terdaftar pada file
/etc/ip_indonesia yang dapat koneksi ke server file ini saya download di sini http://www.ipdeny.com/ipblocks/data/countries/id.zone

Kemudian; agar firewall mengizinkan kembali IP yang kedapatan melakuakan abusive; saya flush table abusive_hosts dengan file /home/muntaza/bin/flush.sh yang berisi:

/sbin/pfctl -t abusive_hosts -T show >> /home/muntaza/daftar
/sbin/pfctl -t abusive_hosts -T flush 1>> /home/muntaza/daftar \
     2>> /home/muntaza/daftar

saya jalankan dengan cron tiap 1 (satu) menit. ini tambahan pada crontab:

# flush table pf
*       *       *       *       *       /bin/sh /home/muntaza/bin/flush.sh

Sekian dari saya; Alhamdulillah

Muhammad Muntaza bin Hatta

Leave a comment