- Back to Home »
- Firewall Turunan IPTABLES
Posted by : Unknown
Jumat, 26 Juli 2013
Shorewall
Shorewall adalah salah satu tools firewall pada linux yang
berbasiskan iptables. Shorewall terdapat konsep “zone” yang memudahkan kita
untuk menentukan policy firewall, daripada kita melakukan konfigurasi secara
manual dengan iptables, sebelum kita mensetting shorewall lebih baiknya saya
kasih mukadimah mengenai shorewall sebelumnya. Shorewall adalah sebuah tool
firewall yang menggunakan IPTABLES sebagai pengeksekusi firewallnya. Dimana
IPTABLES adalah tool firewall yang ada di Linux dan sudah di include kan ke
kernel, jadi kalau kita nginstall Linux otomatis kita telah menginstall
IPTABLES. Dengan IPTABLES saja sebenernya sudah cukup untuk membangun sebuah
firewall, namun bila kita membangun firewall dari IPTABLES tanpa tool itu sama
saja dengan menyiksa diri sendiri.
Dengan tool shorewall ini saya merasa dimanjakan dengan kemudahannya dalam membangun firewall. Kita cuma perlu menentukan aturan defaultnya lalu aturan khususnya juga pada masqueradingnya.
Shorewall juga dapat digunakan untuk loadbalancing, dan sangat mudah sekali dalam penggunaanya (baru baca, belum pernah nyoba saya).
Dengan tool shorewall ini saya merasa dimanjakan dengan kemudahannya dalam membangun firewall. Kita cuma perlu menentukan aturan defaultnya lalu aturan khususnya juga pada masqueradingnya.
Shorewall juga dapat digunakan untuk loadbalancing, dan sangat mudah sekali dalam penggunaanya (baru baca, belum pernah nyoba saya).
Firewall di DEBIAN dengan Shorewall
Peringatan
Sebelum kita berkenalan dengan shorewall, perlu saya sampaikan disini, jika Anda ingin mencoba-coba mengkonfigurasi firewall, pastikan mesin yang Anda gunakan tidak berada di posisi yang jauh (susah Anda jangkau secara fisik). Kesalahan dalam mengkonfigurasi firewall bisa menyebabkan sistem Anda terkunci, dan tidak bisa diremote login dari jauh. Shorewall terdapat konsep “zone” yang memudahkan kita untuk menentukan policy firewall, daripada kite melakukan konfigurasi secara manual dengan iptables. Misalnya network anda adalah seperti gambar dibawah ini :
Instalasi Shorewall
maka untukmemudahkan kita, asumsikan saja ada 3 zona yang
dapat di definisikan, yaitu :
1. LAN, yaitu jaringan lokal, kita definisikan sebagai zona lok
2. Internet, yaitu koneksi kita ke internet, kita definisikn sebagai zona net
3. Komputer Firewall kita secara otomatis bernama zona $FW
Berikut ini adalah step-by-step konfigurasi yang diterapkan
ini saya testing di Debian
sebelumnya ente kudu remove "ipchains" jika dah keinstal di mesin ente by running this command
1. LAN, yaitu jaringan lokal, kita definisikan sebagai zona lok
2. Internet, yaitu koneksi kita ke internet, kita definisikn sebagai zona net
3. Komputer Firewall kita secara otomatis bernama zona $FW
Berikut ini adalah step-by-step konfigurasi yang diterapkan
ini saya testing di Debian
sebelumnya ente kudu remove "ipchains" jika dah keinstal di mesin ente by running this command
# apt-get remove ipchains
setelah itu
1. Install shorewall dari repository terdekat
Code:
root@haris:~# apt-get install shorewall shorewall-doc
2. Kopi konfigurasi dari template yg
ada
Code:
root@haris:~# cd
/usr/share/doc/shorewall-common/default-config
root@haris:~# cp zones /etc/shorewall/
root@haris:~# cp interfaces /etc/shorewall/
root@haris:~# cp policy /etc/shorewall/
root@haris:~# cp rules /etc/shorewall/
root@haris:~# cp zones /etc/shorewall/
root@haris:~# cp interfaces /etc/shorewall/
root@haris:~# cp policy /etc/shorewall/
root@haris:~# cp rules /etc/shorewall/
3. Setting Shorewall sebagai berikut
:
a. konfigurasi zona
a. konfigurasi zona
Code:
root@haris:~# vim
/etc/shorewall/zones
fw firewall
lok ipv4
net ipv4
fw firewall
lok ipv4
net ipv4
b. konfigurasi interface
Code:
root@haris:~# vim
/etc/shorewall/interfaces
lok eth0 detect tcpflags,nosmurfs
net eth1 detect tcpflags,nosmurfs
lok eth0 detect tcpflags,nosmurfs
net eth1 detect tcpflags,nosmurfs
c. konfigurasi policy
Code:
root@haris:~# vim
/etc/shorewall/policy
$FW all ACCEPT
lok $FW DROP info
lok net DROP info
net $FW DROP info
net lok DROP info
$FW all ACCEPT
lok $FW DROP info
lok net DROP info
net $FW DROP info
net lok DROP info
d. konfigurasi rules
Code:
root@haris:~# vim
/etc/shorewall/rules
ACCEPT lok $FW tcp 80
ACCEPT net $FW tcp 80
ACCEPT lok $FW tcp 53
ACCEPT lok $FW udp 53
ACCEPT lok $FW tcp 80
ACCEPT net $FW tcp 80
ACCEPT lok $FW tcp 53
ACCEPT lok $FW udp 53
4. Testing konfigurasi sebelum menjalankannya
Code:
root@haris:~# shorewall check
root@haris:~# shorewall start
root@haris:~# shorewall start
5. Coba
me-restart shorewall untuk memastikan tidak ada error
Code:
root@haris:~# shorewall restart
root@haris:~# shorewall safe-restart
root@haris:~# shorewall safe-restart
6. Setting Shorewall agar automatis
berjalan sewaktu booting
Code:
root@haris:~# vim
/etc/default/shorewall
startup=1
startup=1
Code:
shorewall
shorewall-nat
shorewall-accounting
shorewall-hosts
shorewall-interfaces
shorewall-routestopped
shorewall.conf
shorewall-masq
shorewall-policy
shorewall-rules
shorewall-zones
shorewall-nat
shorewall-accounting
shorewall-hosts
shorewall-interfaces
shorewall-routestopped
shorewall.conf
shorewall-masq
shorewall-policy
shorewall-rules
shorewall-zones
konfigurasi /etc/shorewall/shorewall.conf
Di konfigurasi ini, isi saja yang diperlukan, yang sebagian sudah terisi biasanya tidak perlu di ubah.
Lengkapnya…
Code:
###############################################################################
# S T A R T U P E N A B L E D
###############################################################################
#agar aktif saat startup
STARTUP_ENABLED=YES
###############################################################################
# V E R B O S I T Y
###############################################################################
#menampilkan proses
VERBOSITY=1
###############################################################################
# C O M P I L E R
# (setting this to 'perl' requires installation of Shorewall-perl)
###############################################################################
#karena tidak ada yang perlu di compile, kosongkan saja
SHOREWALL_COMPILER=
###############################################################################
# L O G G I N G
###############################################################################
#bagian ini, tidak ada yang diubah, periksa dulu tapinyaaa
LOGFILE=/var/log/messages
LOGFORMAT="Shorewall:%s:%s:"
LOGTAGONLY=No
LOGRATE=
LOGBURST=
LOGALLNEW=
BLACKLIST_LOGLEVEL=
MACLIST_LOG_LEVEL=info
TCP_FLAGS_LOG_LEVEL=info
RFC1918_LOG_LEVEL=info
SMURF_LOG_LEVEL=info
LOG_MARTIANS=No
###############################################################################
# L O C A T I O N O F F I L E S A N D D I R E C T O R I E S
###############################################################################
#pada bagian ini, yang sebelah kanan setelah "=" berisi letak direktori file
#sebelah kiri yang sudah terisi tidak perlu di ubah, yang belum dan kalo akan
#digunakan cari dulu filenya, kemudian copy paste letak direktorinya.
#IPTABLES kosongkan, karena kita sudah jadikan shorewall sebagai firewall
IPTABLES=
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
SHOREWALL_SHELL=/bin/sh
SUBSYSLOCK=/var/lock/subsys/shorewall
MODULESDIR=/lib/modules/2.6.24-19-server/kernel/net/netfilter
CONFIG_PATH=/etc/shorewall:/usr/share/shorewall
RESTOREFILE=
IPSECFILE=zones
LOCKFILE=
###############################################################################
# D E F A U L T A C T I O N S / M A C R O S
###############################################################################
#tak perlu ada yang diubah
DROP_DEFAULT="Drop"
REJECT_DEFAULT="Reject"
ACCEPT_DEFAULT="none"
QUEUE_DEFAULT="none"
###############################################################################
# R S H / R C P C O M M A N D S
###############################################################################
#ini juga... biarkan
RSH_COMMAND='ssh ${root}@${system} ${command}'
RCP_COMMAND='scp ${files} ${root}@${system}:${destination}'
###############################################################################
# F I R E W A L L O P T I O N S
###############################################################################
# konfigurasi yang biasanya digunakan...
IP_FORWARDING=On
ADD_IP_ALIASES=Yes
ADD_SNAT_ALIASES=No
RETAIN_ALIASES=No
TC_ENABLED=Internal
TC_EXPERT=No
CLEAR_TC=Yes
MARK_IN_FORWARD_CHAIN=No
CLAMPMSS=No
ROUTE_FILTER=No
DETECT_DNAT_IPADDRS=No
MUTEX_TIMEOUT=60
ADMINISABSENTMINDED=Yes
BLACKLISTNEWONLY=Yes
DELAYBLACKLISTLOAD=No
MODULE_SUFFIX=
DISABLE_IPV6=Yes
BRIDGING=No
DYNAMIC_ZONES=No
PKTTYPE=Yes
RFC1918_STRICT=No
MACLIST_TABLE=filter
MACLIST_TTL=
SAVE_IPSETS=No
MAPOLDACTIONS=No
FASTACCEPT=No
IMPLICIT_CONTINUE=Yes
HIGH_ROUTE_MARKS=No
USE_ACTIONS=Yes
OPTIMIZE=1
EXPORTPARAMS=No
###############################################################################
# P A C K E T D I S P O S I T I O N
###############################################################################
#yang ini juga nggak perlu ada yang diubah
BLACKLIST_DISPOSITION=DROP
MACLIST_DISPOSITION=REJECT
TCP_FLAGS_DISPOSITION=DROP
#LAST LINE -- DO NOT REMOVE
# S T A R T U P E N A B L E D
###############################################################################
#agar aktif saat startup
STARTUP_ENABLED=YES
###############################################################################
# V E R B O S I T Y
###############################################################################
#menampilkan proses
VERBOSITY=1
###############################################################################
# C O M P I L E R
# (setting this to 'perl' requires installation of Shorewall-perl)
###############################################################################
#karena tidak ada yang perlu di compile, kosongkan saja
SHOREWALL_COMPILER=
###############################################################################
# L O G G I N G
###############################################################################
#bagian ini, tidak ada yang diubah, periksa dulu tapinyaaa
LOGFILE=/var/log/messages
LOGFORMAT="Shorewall:%s:%s:"
LOGTAGONLY=No
LOGRATE=
LOGBURST=
LOGALLNEW=
BLACKLIST_LOGLEVEL=
MACLIST_LOG_LEVEL=info
TCP_FLAGS_LOG_LEVEL=info
RFC1918_LOG_LEVEL=info
SMURF_LOG_LEVEL=info
LOG_MARTIANS=No
###############################################################################
# L O C A T I O N O F F I L E S A N D D I R E C T O R I E S
###############################################################################
#pada bagian ini, yang sebelah kanan setelah "=" berisi letak direktori file
#sebelah kiri yang sudah terisi tidak perlu di ubah, yang belum dan kalo akan
#digunakan cari dulu filenya, kemudian copy paste letak direktorinya.
#IPTABLES kosongkan, karena kita sudah jadikan shorewall sebagai firewall
IPTABLES=
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
SHOREWALL_SHELL=/bin/sh
SUBSYSLOCK=/var/lock/subsys/shorewall
MODULESDIR=/lib/modules/2.6.24-19-server/kernel/net/netfilter
CONFIG_PATH=/etc/shorewall:/usr/share/shorewall
RESTOREFILE=
IPSECFILE=zones
LOCKFILE=
###############################################################################
# D E F A U L T A C T I O N S / M A C R O S
###############################################################################
#tak perlu ada yang diubah
DROP_DEFAULT="Drop"
REJECT_DEFAULT="Reject"
ACCEPT_DEFAULT="none"
QUEUE_DEFAULT="none"
###############################################################################
# R S H / R C P C O M M A N D S
###############################################################################
#ini juga... biarkan
RSH_COMMAND='ssh ${root}@${system} ${command}'
RCP_COMMAND='scp ${files} ${root}@${system}:${destination}'
###############################################################################
# F I R E W A L L O P T I O N S
###############################################################################
# konfigurasi yang biasanya digunakan...
IP_FORWARDING=On
ADD_IP_ALIASES=Yes
ADD_SNAT_ALIASES=No
RETAIN_ALIASES=No
TC_ENABLED=Internal
TC_EXPERT=No
CLEAR_TC=Yes
MARK_IN_FORWARD_CHAIN=No
CLAMPMSS=No
ROUTE_FILTER=No
DETECT_DNAT_IPADDRS=No
MUTEX_TIMEOUT=60
ADMINISABSENTMINDED=Yes
BLACKLISTNEWONLY=Yes
DELAYBLACKLISTLOAD=No
MODULE_SUFFIX=
DISABLE_IPV6=Yes
BRIDGING=No
DYNAMIC_ZONES=No
PKTTYPE=Yes
RFC1918_STRICT=No
MACLIST_TABLE=filter
MACLIST_TTL=
SAVE_IPSETS=No
MAPOLDACTIONS=No
FASTACCEPT=No
IMPLICIT_CONTINUE=Yes
HIGH_ROUTE_MARKS=No
USE_ACTIONS=Yes
OPTIMIZE=1
EXPORTPARAMS=No
###############################################################################
# P A C K E T D I S P O S I T I O N
###############################################################################
#yang ini juga nggak perlu ada yang diubah
BLACKLIST_DISPOSITION=DROP
MACLIST_DISPOSITION=REJECT
TCP_FLAGS_DISPOSITION=DROP
#LAST LINE -- DO NOT REMOVE
konfigurasi /etc/shorewall/policy
Bagian ini bersifat umum, berlaku untuk keseluruhan
Code:
#pada baris pertama berarti dari
firewall atau dari net yang berarti dari
#server kita menuju keluar atau ke net di ACCEPT semua... masa di larang!?
#pada baris kedua yang masuk dari net ke firewall kita di DROP semua
#pada baris ketiga saya tambahkan agar jika dari jaringan masuk ke server kita
#DROP dulu semuanya
###############################################################################
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
$FW net ACCEPT
net $FW DROP info
net all DROP info
# The FOLLOWING POLICY MUST BE LAST
all all REJECT info
#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE
#server kita menuju keluar atau ke net di ACCEPT semua... masa di larang!?
#pada baris kedua yang masuk dari net ke firewall kita di DROP semua
#pada baris ketiga saya tambahkan agar jika dari jaringan masuk ke server kita
#DROP dulu semuanya
###############################################################################
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
$FW net ACCEPT
net $FW DROP info
net all DROP info
# The FOLLOWING POLICY MUST BE LAST
all all REJECT info
#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE
konfigurasi /etc/shorewall/rules
Bagian ini merupakan pengecualian dari kongigurasi policy
Code:
#######################################################################################
#ACTION SOURCE DEST PROTO DEST SOURCE
ORIGINAL RATE USER/ MARK
# PORT PORT(S)
DEST LIMIT GROUP
# Reject Ping from the "bad" net zone.. and prevent your log from being flooded..
Ping/ACCEPT net $FW
# Permit all ICMP traffic FROM the firewall TO the net zone
#pada baris pertama berarti membolehkan semua dari server keluar atau ke net melalui icmp
#biar bisa ssh,treceroute,...etc kemana-manaaa
#pada baris kedua berarti kita membolehkan user dari net melakukan koneksi melalui tcp
#tepatnya port 22 ya... biar server kita bisa di kendalikan dengan ssh dari komp lain,
#setujui saja
#pada baris ketiga berarti memperbolehkan server kita diakses lewat browser, yaitu port 80
#karena kebetulan firewall saya pasang di webserver^^
ACCEPT $FW net icmp
ACCEPT net $FW tcp 22
ACCEPT all $FW tcp 80
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
#ACTION SOURCE DEST PROTO DEST SOURCE
ORIGINAL RATE USER/ MARK
# PORT PORT(S)
DEST LIMIT GROUP
# Reject Ping from the "bad" net zone.. and prevent your log from being flooded..
Ping/ACCEPT net $FW
# Permit all ICMP traffic FROM the firewall TO the net zone
#pada baris pertama berarti membolehkan semua dari server keluar atau ke net melalui icmp
#biar bisa ssh,treceroute,...etc kemana-manaaa
#pada baris kedua berarti kita membolehkan user dari net melakukan koneksi melalui tcp
#tepatnya port 22 ya... biar server kita bisa di kendalikan dengan ssh dari komp lain,
#setujui saja
#pada baris ketiga berarti memperbolehkan server kita diakses lewat browser, yaitu port 80
#karena kebetulan firewall saya pasang di webserver^^
ACCEPT $FW net icmp
ACCEPT net $FW tcp 22
ACCEPT all $FW tcp 80
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
konfigurasi /etc/shorewall/interfaces
Code:
# nggak perlu ada yang diubah
###############################################################################
#ZONE INTERFACE BROADCAST OPTIONS
net eth0 detect dhcp,tcpflags,logmartians,nosmurfs
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
###############################################################################
#ZONE INTERFACE BROADCAST OPTIONS
net eth0 detect dhcp,tcpflags,logmartians,nosmurfs
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
Klo udah,.tinggal start lagi shorewallnya
Code:
/etc/init.d/shorewall start