Firewall adalah sebuah sistem atau grup sistem yang menjalankan kontrol akses keamanan diantara jaringan internal yang aman dan jaringan yang untrusted seperti internet.Firewall didesain untuk mengijinkan trusted data atau data yang dipercaya lewat, menolak layanan yang mudah diserang, mencegah jaringan internal dari serangan luar yang bisa menembus firewall setiap waktu.
Konfigurasi Firewall
Menggunakan IPFW :
IPFW merupakan salah satu pengaturan firewall yang ada di dalam FreeBSD. Setting dan aplikasinya cukup mudah.Dengan IPFW kita dapat mengatur jaringan kita.Kita dapat menolak paket yang masuk dan yang keluar serta kita juga dapat membuat aplikasi NAT dengan menggunakan IPFW. Contoh rule set dari IPFW berada pada directory /etc/rc.firewall. Namun kita juga dapat mensetting sesuai dengan keinginan kita.
IPFW merupakan salah satu pengaturan firewall yang ada di dalam FreeBSD. Setting dan aplikasinya cukup mudah.Dengan IPFW kita dapat mengatur jaringan kita.Kita dapat menolak paket yang masuk dan yang keluar serta kita juga dapat membuat aplikasi NAT dengan menggunakan IPFW. Contoh rule set dari IPFW berada pada directory /etc/rc.firewall. Namun kita juga dapat mensetting sesuai dengan keinginan kita.
Untuk dapat mengaktifkan IPFW diperlukan
konfigurasi kernel.
-Compile kernel FreeBSD untuk IPFW
Pastikan IPFW support belum ter-compile pada kernel :
-Compile kernel FreeBSD untuk IPFW
Pastikan IPFW support belum ter-compile pada kernel :
#ipfw list
-Jika anda mendapatkan error seperti berikut ini,
maka anda harus meng compile ulang kernel FreeBSD anda.
ipfw: getsockopt(IP_FW_GET): Protocol not available
Opsi lain dengan mengecek file config kernel nya /usr/src/sys/i386/conf dan dari option IPFIREWALL :
# grep IPFIREWALL /usr/src/sys/i386/conf
Opsi lain dengan mengecek file config kernel nya /usr/src/sys/i386/conf dan dari option IPFIREWALL :
# grep IPFIREWALL /usr/src/sys/i386/conf
-Recompile ulang Kernel dengan opsi IPFW
Copy file baru dari default kernel:
Copy file baru dari default kernel:
# cd /usr/src/sys/i386/conf
# cp GENERIC IPFWKERNEL
# cp GENERIC IPFWKERNEL
-tambahkan dengan option IPFW support :
# mc IPFWKERNEL
options IPFIREWALL # required for IPFW
options IPFIREWALL_VERBOSE # optional; logging
options IPFIREWALL_VERBOSE_LIMIT=10 # optional; don’t get too many log entries
options IPDIVERT # needed for natd
options IPFIREWALL # required for IPFW
options IPFIREWALL_VERBOSE # optional; logging
options IPFIREWALL_VERBOSE_LIMIT=10 # optional; don’t get too many log entries
options IPDIVERT # needed for natd
-simpan dan tutup file tersebut, recompile
kernel, tulis perintah berikut ini :
# cd /usr/src
# make buildkernel KERNCONF=IPFWKERNEL
# make buildkernel KERNCONF=IPFWKERNEL
-Install kernel baru tersebut :
# make installkernel KERNCONF=IPFWKERNEL
-Rebootsistemnya :
# reboot
-Langkah 1 :Enabling IPFW Buka file /etc/rc.conf
# mcedit /etc/rc.conf
-tambahkan berikut ini:
firewall_enable=”YES”
firewall_script=”/usr/local/etc/ipfw.rules”
firewall_script=”/usr/local/etc/ipfw.rules”
-Simpan dan tutup file.
-Langkah 3 : Buat Script Firewall Rule
Anda buat file ipfw.rule dan letakkan script firewall
tersebut pada /usr/local/etc/ipfw.rule :
# mcedit /usr/local/etc/ipfw.rules
-tambahkan contoh perintah berikut :
IPF=”ipfw -q add”
ipfw -q -f flush
ipfw -q -f flush
#loopback
ipfw add 10 allow all from any to any via lo0
ipfw add 20 deny all from any to 127.0.0.0/8
ipfw add 30 deny all from 127.0.0.0/8 to any
ipfw add 40 deny tcp from any to any frag
ipfw add 10 allow all from any to any via lo0
ipfw add 20 deny all from any to 127.0.0.0/8
ipfw add 30 deny all from 127.0.0.0/8 to any
ipfw add 40 deny tcp from any to any frag
# statefull
ipfw add 50 check-state
ipfw add 60 allow tcp from any to any established
ipfw add 70 allow all from any to any out keep-state
ipfw add 80 allow icmp from any to any
ipfw add 50 check-state
ipfw add 60 allow tcp from any to any established
ipfw add 70 allow all from any to any out keep-state
ipfw add 80 allow icmp from any to any
# open port ftp (20,21), ssh (22), mail (25)
# http (80), dns (53) etc
ipfw add 110 allow tcp from any to any 21 in
ipfw add 120 allow tcp from any to any 21 out
ipfw add 130 allow tcp from any to any 22 in
ipfw add 140 allow tcp from any to any 22 out
ipfw add 150 allow tcp from any to any 25 in
ipfw add 160 allow tcp from any to any 25 out
ipfw add 170 allow udp from any to any 53 in
ipfw add 175 allow tcp from any to any 53 in
ipfw add 180 allow udp from any to any 53 out
ipfw add 185 allow tcp from any to any 53 out
ipfw add 200 allow tcp from any to any 80 in
ipfw add 210 allow tcp from any to any 80 out
# http (80), dns (53) etc
ipfw add 110 allow tcp from any to any 21 in
ipfw add 120 allow tcp from any to any 21 out
ipfw add 130 allow tcp from any to any 22 in
ipfw add 140 allow tcp from any to any 22 out
ipfw add 150 allow tcp from any to any 25 in
ipfw add 160 allow tcp from any to any 25 out
ipfw add 170 allow udp from any to any 53 in
ipfw add 175 allow tcp from any to any 53 in
ipfw add 180 allow udp from any to any 53 out
ipfw add 185 allow tcp from any to any 53 out
ipfw add 200 allow tcp from any to any 80 in
ipfw add 210 allow tcp from any to any 80 out
# deny and log everything
ipfw add 500 deny log all from any to any
ipfw add 500 deny log all from any to any
-Jika kita ingin menambahkan rule IPFW
yang baru dapat dilakukan dengan mengetikkan perintah :
# ipfw add (no perintah) (aksi yg diinginkan) from
(alamat) to (alamat)
-Untuk menghentikannya:
# ipfw delete (nomor perintah.
Komponen Sistem Firewall
Firewall dapat berupa PC, router, midrange,
mainframe, UNIX workstation, atau gabungan dari yang tersebut diatas.Firewall
dapat terdiri dari satu atau lebih komponen fungsional sebagai berikut :
- Packet-filtering router
- Application level gateway (proxy)
- Circuit level gateway
Contoh Tipe Firewall
Firewall terdiri dari satu atau lebih elemen
software yang berjalan pada satu atau lebih host.
Tipe-tipe firewall adalah sebagai berikut:
- Packet-filtering Firewall
- Dual-homed Gateway Firewall
- Screened Host Firewall
- Screened Subnet Firewall
Packet-filtering Firewall
•Terdiri dari sebuah router yang diletakkan
diantara jaringan eksternal dan jaringan internal yang aman.
•Rule Packet Filtering didefinisikan untuk
mengijinkan atau menolak traffic.
Dual-homed Gateway Firewall
•Dual-home host sedikitnya mempunyai dua interface
jaringan dan dua IP address.
•IP forwarding dinonaktifkan pada firewall,
akibatnya trafik IP pada kedua interface tersebut kacau di firewall karena
tidak ada jalan lain bagi IP melewati firewall kecuali melalui proxy atau
SOCKS.
•Serangan yang datang dari layanan yang tidak
dikenal akan diblok.
Screened Host Firewall
•Terdiri dari sebuah packet-filtering router dan
application level gateway
•Host berupa application level gateway yang dikenal
sebagai “bastion host”
•Terdiri dari dua router packet filtering dan
sebuah bastion host
Screened Subnet Firewall
•Menyediakan tingkat keamanan yang tinggi daripada
tipe firewall yang lain
•Membuat DMZ(Demilitarized Zone) diantara jaringan
internal dan eksternal,sehingga router luar hanya mengijinkan akses dari luar
bastion host ke information server dan router dalam hanya mengijinkan akses
dari jaringan internal ke bastion host
•Router dikonfigurasi untuk meneruskan semua
untrusted traffic ke bastion host dan pada kasus yang sama juga ke information
server.
Konfigurasi Server ipchains
Mengeluarkandua perintahberikut untuk mengaktifkanipchains:
echo 1>/proc/sys/net/ipv4/ip_forward
ipchains-A forward-j MASQ-s 192.168.1.0/24-d 0.0.0.0/0
Baris pertamamemungkinkanip_forwarding, danbaris keduamemberitahu serverjaringan yang akanmemberikanhak istimewainternetmenjadi saham. Dalamcontoh di atassubnet192.168.1. *Diperbolehkanuntuk berbagikoneksiinternet. Gantisubnetdengan Anda. Keduaperintahharus dikeluarkanoleh root. Untuk memulaiipchainspada saat boot, tambahkan sajaduabaris di ataskeakhir file/etc /rc.d/rc.local.
Mengeluarkandua perintahberikut untuk mengaktifkanipchains:
echo 1>/proc/sys/net/ipv4/ip_forward
ipchains-A forward-j MASQ-s 192.168.1.0/24-d 0.0.0.0/0
Baris pertamamemungkinkanip_forwarding, danbaris keduamemberitahu serverjaringan yang akanmemberikanhak istimewainternetmenjadi saham. Dalamcontoh di atassubnet192.168.1. *Diperbolehkanuntuk berbagikoneksiinternet. Gantisubnetdengan Anda. Keduaperintahharus dikeluarkanoleh root. Untuk memulaiipchainspada saat boot, tambahkan sajaduabaris di ataskeakhir file/etc /rc.d/rc.local.
Konfigurasi Client ipchains
Paraklienharus dikonfigurasiuntuk menggunakanipchains. Ada dua langkahpentingyang terlibat.
Mengaturgatewayke alamatIPdariserver.
MengaturnomorDNSke nomorDNSdaripenyedia jasa layanan internet(DNS yang samasebagai server).
Hal ini dapat dilakukandalam berbagaicara yang berbeda, termasuk mengeluarkanperintahdari baris perintah, mengeditfile konfigurasidengan tangan, menggunakanlinuxconf, atau menggunakannetcfg, utilitasRed Hat. Jika Andainginmengeditfiledengan tangan, gatewayterletakdi file/ fileetc /sysconfig/jaringan dannomorDNSharusterdaftardi / etc/resolv.conf.
Contoh / etc/sysconfig/networkfile:
NETWORKING=yes
FORWARD_IPV4=no
HOSTNAME=hostname.domain.net
DOMAINNAME=domain.net
GATEWAY=192.168.1.1
GATEWAYDEVeth0=
Contoh /etc /resolv.conf:
caridomain.com
nameserver207.217.120.92
nameserver207.217.126.91
nameserver207.217.77.90
Konfigurasi IP Tables
Syarat dalam konfigurasi iptables :iptables -t -A | -I < (PREROUTING;INPUT;FORWARD;OUTPUT;POSTROUTING) > [opsi]
iptables -t -D [opsi]
iptables -t -N | - X | -F [nama chain]
opsinya :
-s [source-ip = ip asal]
-d [destination-ip = ip tujuan]
-p [protokol digunakan untuk proses-proses seperti tcp,icmp,udp,dsb untuk lebih jelasnya bisa dilihat dalam “/etc/protocol” jika menggunakan putty, melihat protokol-protokol yang ada bisa dengan menggunakan “less /etc/services“]
–dport [destination-port = port asal]
–sport [source-port = port tujuan]
-j [jump-target]
untuk nama tabel :
filter digunakan untuk filtering paket
nat digunakan network address translation (mengubah alamat jaringan)
mangle digunakan untuk penandaan paket
untuk perintah :
A –> APPEND (memberikan aturan ke dalam tabel yang dibuat)
I –> INSERT (memasukkan aturan ke dalam tabel yang dibuat)
D –> DELETE (menghapus aturan di dalam tabel yang dibuat)
N –> create NEW chain (membuat chain baru)
X –> delete chain yang dibuat (menghapus chain yang dibuat)
F –> FLUSH (menghapus semua aturan yang ada)
berikut ini adalah rantai built-in (untuk aturan) yang ada di dalam tabel :
1. PREROUTING : paket yang datang sebelum routing/sebelum paket melalui table routing
2. INPUT : paket yang memasuki suatu mesin
3. FORWARD : paket yang melintasi suatu mesin
4. OUTPUT : paket yang keluar dari suatu mesin
5. POSTROUTING : paket setelah routing/setelah paket melalui table routing
untuk tabel filter mempunyai rantai built-in 2,3 dan 4
untuk tabel nat mempunyai rantai built-in 1,3 dan 5
untuk tabel mangle mempunyai keseluruhan rantai built-in, mulai dari 1 sampai 5
-j, –jump target mempunyai opsi yang bisa dilakukan yaitu :
>chain yang dibuat
>DROP
drop semua paket
>ACCEPT
menerima semua paket
>REJECT, –reject-with
menolak semua paket, dengan mengirimkan alasan :
icmp-net-unreachable
icmp-host-unreachable
icmp-port-unreachable
icmp-proto-unreachable
icmp-net-prohibited
icmp-host-prohibited
icmp-admin-prohibited (*)
>MASQUERADE
menutupi alamat asal dengan alamat gateway
>DNAT, –to-destination
destination nat, mempunyai fungsi mentranslasi alamat network tujuan, membelokkan alamat tujuan tetapi hanya mempunyai opsi PREROUTING dan OUTPUT
>SNAT, –to-source
source nat, mempunyai fungsi mentranslasi alamat network asal, membelokkan alamat asal tetapi hanya mempunyai opsi POSTROUTING
>REDIRECT, –to-ports
membelokkan port, dari port mana ke port mana tetapi hanya ada di tabel.
menggunakan chain PREROUTING dan OUTPUT
Contoh :
1. Membelokkan akses SSH dari suatu jaringan ke jaringan/host lainnya
Misal :
Kita mempunyai ip1 yaitu 10.40.7.34 akan dibelokkan ke ip2 yaitu 10.40.7.2 dan diantaranya dipisahkan oleh sebuah router. Maka iptables akan diletakkan di router tersebut dan perintahnya adalah :
iptables -t nat -A PREROUTING -s 10.40.7.34 -p TCP –to-destination 10.40.7.2 -j DNAT
2. Membuat sebuah chain rule baru yang berfungsi untuk mencatat semua koneksi TCP ke jaringan tertentu
Misal :
Jaringan tersebut mempunyai NetID 10.126.73.80/28. Maka perintah untuk soal diatas adalah :
iptables -N chain_baru
iptables -A FORWARD -p TCP -d 10.126.73.80/28 -j chain_baru.