Tulisan saya kali ini membuat gateway manual dengan Debian 7 ditambah implementasi Shoreline Firewall (ShoreWall) yang katanya membuat seting iptables menjadi tidak rumit.

gareth-davies-logo3

Kalau butuh yang instan-instan untuk keperluan internet sharing, saya rekomendasikan menggunakan distro-distro Router yang sangat mudah di konfigurasikan, misalnya seperti Zentyal, Clearos, IPCop, Smoothwall, Mikrotik dll.

Lanjut ke ShoreWall; untuk itu perhatikan diagram network yang akan dijadikan praktek:

 

debian router2
Dari MODEM, semua port sudah di forward ke Debian, TCP, UDP dll.

Modem FO akan memberikan IP LAN kelas C, 192.168.30.2~254 secara default DHCP ke interface (eth) 1 pada mesin Debian. Saya set manual, sehingga mesin Debian ber-ip kan 192.168.30.20/24. DNS #1 menggunakan DNS ISP sisanya menggunakan Google Public DNS. Interface #2 diperuntukan ke LAN melalui hub-switch yang akan melayani kebutuhan internet sharing. Interface #3 akan dipergunakan sebagai DMZ; dimana seluruh mesin di area DMZ akan bisa diakses oleh public internet/LAN.

Unduh dulu Shorewallnya dari  http://www.shorewall.net/download.htm; atau gunakan fungsi “apt-get install shorewall”. Dan karena saya lebih suka CLI, saya gunakan text-editor yang saya sukai.

Config utama ShoreWall ada di /etc/default/shorewall. Konfigurasi tambahannnya ada di /etc/shorewall

Untuk mengaktivkan shorewall edit

# nano  /etc/default/shorewall

lalu rubah

startup=0

 

menjadi

startup=1

Artinya Shorewall akan aktif ketika boot awal system.

 

Agar dari eth1 bisa mengakses ke eth2 (local to dmz), edit file:

# nano /etc/shorewall/shorewall.conf

cari IP_FORWARDING set ke On

...
IP_FORWARDING=On
...

 

Karena yang akan saya buat menggunakan 3 interface, dengan area zone LAN dan DMZ. Editlah file zone nya:

# nano /etc/shorewall/zones

tinggal menambahkan ini aja; saya belum coba penamaan zone nya bisa bebas atau tidak 😀

fw firewall
net ipv4
dmz ipv4
loc ipv4

 

Nah lanjutnya seting area untuk interface; assign eth1 untuk LAN (loc), eth2 untuk DMZ dan eth0 sebagai net (akses internet utama).

nano /etc/shorewall/interfaces

Sesuaikan dengan interface dengan diagaram diawal artikel ini.

net eth0 detect dhcp,routefilter,tcpflags
loc eth1 detect dhcp
dmz eth2 detect dhcp

 

Woke, assign zone sudah. selanjutnya seting policy. tergantung kebutuhan, jadinya beda-beda.

nano  /etc/shorewall/policy

 

Tidak Menganut konsep policy untuk OpenBSD — incoming di reject/drop.

loc all REJECT
net all DROP
dmz all REJECT
fw all ACCEPT
all all REJECT

Nah ini baru seting rules yang boleh diakses dari internet ke dalam dmz, dari internet ke mesin debian, dari lan ke internet dsb.. caranya seting rules pada: *sesuaikan dengan kebutuhan.

# nano /etc/shorewall/rules

 

Karena ada layanan ftp + ftppasv, ssh, http/s, smtp, imap dan pop; yang dibuka hanya itu saja ke dmz.


Invalid(ACCEPT) net all
DNS(ACCEPT) loc $FW
DNS(ACCEPT) $FW net
DNS(ACCEPT) dmz all
SSH(ACCEPT) loc $FW
SSH(ACCEPT) loc dmz
SSH(ACCEPT) all $FW
DNS(REJECT) loc net
DNS(ACCEPT) loc $FW
Ping(ACCEPT) net $FW
Ping(ACCEPT) loc $FW
Ping(ACCEPT) dmz $FW
Ping(ACCEPT) loc dmz
Ping(ACCEPT) dmz loc
Ping(ACCEPT) dmz net
Ping(ACCEPT) all $FW
Ping(ACCEPT) loc net
ACCEPT $FW net icmp
ACCEPT $FW loc icmp
ACCEPT $FW dmz icmp
ACCEPT $FW net tcp http
#ACCEPT all dmz tcp 80,443,25,110,143,21,22,1100:1199
DNAT net dmz:192.168.0.2 tcp 80,21,1100:1111,5900,443
DNAT net dmz:192.168.0.3 tcp 22,21,110,25,143

Artinya menerima port 80 http, 22 ssh, 443 ssl ke LAN (loc) tetapi tidak mengizinkan penggantian DNS selain yang di set dari Gateway.

DMZ akan menerima port-port yang disebutkan. Selain yang ditulis, akan di tolak. Pada ip mesin di DMZ 192.168.0.2 port yang di forwared (DNAT) adalah 80,21 dsb. Mesin mail server ada di ip DMZ 192.168.0.3

Sesi SSH ke mesin Debian bisa diakses dari mana saja, External WAN (net), dan dari loc. Kalau tidak membutuhkan ping reply dari (net) tinggal beri tanda ‘#’ pada Ping(ACCEPT) all $FW

Selanjutnya yang di seting adalah MASQuarade dari eth0 ke loc dan ke dmz

# nano /etc/shorewall/masq

isinya sederhana saja:

eth0 eth1
eth0 eth2

 

Cek dulu semua confignya dengan

# shorewall check

seharusnya seperti ini (no error, ada warning gpp)

# shorewall checkChecking...
Processing /etc/shorewall/params ...
Processing /etc/shorewall/shorewall.conf...
Loading Modules...
Checking /etc/shorewall/zones...
Checking /etc/shorewall/interfaces...
Determining Hosts in Zones...
Locating Action Files...
Checking /usr/share/shorewall/action.Drop for chain Drop...
Checking /usr/share/shorewall/action.Broadcast for chain Broadcast...
Checking /usr/share/shorewall/action.Invalid for chain Invalid...
Checking /usr/share/shorewall/action.NotSyn for chain NotSyn...
Checking /usr/share/shorewall/action.Reject for chain Reject...
Checking /etc/shorewall/policy...
Adding rules for DHCP
Checking TCP Flags filtering...
Checking Kernel Route Filtering...
Checking Martian Logging...
Checking /etc/shorewall/masq...
WARNING: Using an interface as the masq SOURCE requires the interface to be up and configured when Shorewall starts/restarts /etc/shorewall/masq (line 1)
Checking MAC Filtration -- Phase 1...
Checking /etc/shorewall/rules...
Checking MAC Filtration -- Phase 2...
Applying Policies...
Shorewall configuration verified

Perhatikan tulisan ‘Shorewall configuration verified’. Selain kata-kata tsb, biasanya Shorewall gagal dalam pengecekan config; dan tidak bisa di start servicenya.

Install dnsmasq dulu; biar client bisa resolv DNS

apt-get install dnsmasq

 

kalau tidak error di confignya shorewall / dnsmsq baru di start ShoreWall nya 😀

/etc/init.d/shorewall start

Kalau client di belakang Debian belum bisa ping/akses internet, coba di restart dulu mesin Debiannya. 😀

 

shorewall client inet acc Screenshot_1
DARI SISI LAN= ping oke; resolv dns bisa. dan tentu saja bisa akses sesuai rules.
shorewall dmz http listen b
DARI SISI DMZ=dns resolv, akses ke luar OK, ada layanan webserver di port 80 dsb.
shorewall dmz http listen c
DARI SISI WAN (NET) sudah bisa akses folder http shared

Selesai sudah setting iptables versi texteditor 😀 tidak pusing-pusing ketik di terminal ‘iptables bla bla bla DROP bla bla…’ dll dll — Kesimpulan saya memang sangat mudah menggunakan ShoreWall. Jika bingung pelajari saja contoh-contoh config nya di /usr/share/doc/shorewall.

Relatif aman di level netfilter. tetapi kalau ada kebocoran aplikasi di sisi scripting php; misalnya bisa di inject dengan keyword sql; itu lain hal.

 

 

 

clint eastwood 1_2jiim careykd 1_2

 

 

Situs ini kehilangan image dan files penunjang; karena terjadi storage failure dan saya tidak menyimpan backupnya - harap maklum
+