Dalam IT (Komputer) , dinding api (firewall) adalah merujuk kepada perkakasan atau perisian yang berfungsi pada persekitaran rangkaian yang menyediakan dan mengawal sesetengah komunikasi pada rangkaian yang dikawal mengikut polisi. Dinding api juga dipangil sebagai BPD (Borfer Protection Device, terutama mengikut konteks NATO, atau paket yang di tapis mengikut konteks BSD. Dinding api mempunyi fungsi asas bagi mengawal laluan rangkaian di antara zon berbeza. Zon yang biasa nya adalah zon internet (Zon yang tidak boleh di percayai) dan zon rangkaian dalaman (Zon yang boleh dipercaya). Matlamat sepenuhnya yang di diberikan adalah kawalan sambungan di antara zon yang mempunyi peringkat polisi keselamatan yang berbeza dan modul sambungan berasaskan paling tidak prinsip keistemewaan.
Tatarajah/konfigurasi (configuration) dinding api yang baik memerlukan kemahiran yang baik dari pengendali (Administrator).Pengendali memerlukan kefahaman tentang protokol rangkaian dan keselamatan komputer. Sedikit kesilapan akan membuatkan ketidak berkesanan dinding api sebagai alat bagi mengawal keselamatan rangkaian.
Firewall adalah satu peralatan keselamatan yang semakin menjadi satu kemestian kepada mereka yang berhubung ke Internet dan juga menjadi satu jenis aplikasi untuk menyediakan sistem keselamatan pada rangkaian peribadi (private networks).
Perlu diingatkan di sini bahawa tanggapan global bahawa dengan adanya satu firewall antara rangkaian dalaman dengan Internet ia akan menyelesaikan masalah keselamatan data adalah ini tidak benar sama sekali. Walaupun ia akan membantu meningkatkan tahap keselamatan tetapi firewall yang dipasang dengan cara yang tidak betul adalah lebih cenderung kepada risiko keselamatan sama seperti tiada langsung firewall.
Secara asasnya Firewall akan menambah satu aras keselamatan kepada sistem anda tetapi ia tidak akan menyekat cracker atau penggodam yang betul-betul nekad untuk masuk ke dalam rangkaian anda. Apakah ianya firewall?
Ia bertugas di pintu gerbang masuk rangkaian dan setiap packet yang melaluinya perlu mematuhi polisi firewall tersebut.
Terdapat tiga jenis firewall yang menjadi kegunaan umum di Internet pada hari ini.
1) Jenis yang pertama lebih dikenali dengan nama Packet Filtering Router,di mana kernel pada komputer/router multi-homed (dual-direction) akan menentukan sama ada untuk meneruskan (forward) atau memansuhkan (reject) berdasarkan kepada set-set arahan yang telah ditetapkan.
Sebuah router yang meneruskan paket-paket data di antara dua rangkaian. Sesebuah packet filtering router mempunyai kod-kod spesifik untuk mengendalikan mekanisme ini. Biasanya dilekapkan pada kernel untuk tujuan kecekapan dan keselesaan implementasi. Kod-kod ini digunakan untuk membuat perbandingan setiap paket data dengan set-set arahan sebelum ia membuat keputusan untuk meneruskan atau memansuhkan perjalanan paket tersebut.
Kebanyakkan aplikasi-aplikasi moden firewall seperti pf (OpenBSD), ipfw/2 (FreeBSD dan NetBSD) dan iptables (Linux) mempunyai set arahan khas di dalamnya yang dipanggil filtering instructions atau arahan penapisan yang akan bertindak ke atas set arahan lalai (default) yang membenarkan perjalanan paket-paket data tanpa sebarang halangan ke destinasi. Untuk membenarkan kefungsian penapisan tersebut, anda akan membuat penakrifan set-set arahan penapis yang akan bertindak untuk menentukan sama ada untuk membenarkan atau memansuhkan perjalanan paket-paket data ke destinasi. Pada pengalaman saya, kebanyakkan aplikasi firewall melalaikan kepada Deny untuk tujuan keselamatan, ini bermakna set-set arahan penapisan akan menakrifkan paket-paket data yang dibenarkan untuk melepasi firewall. Arahan Deny akan memansuhkan semua paket-paket data untuk diteruskan ke destinasi. Kebanyakkan kes kesilapan kali pertama berpunca daripada konfigurasi firewall ini.
Untuk menentukan sama ada sesuatu paket itu patut diteruskan, kod penapisan akan melihat set-set arahan untuk mendapatkan arahan yang bertepatan dan menepati kandungan header paket. Sekiranya arahan bersilang (ditepati), arahan tersebut akan dilaksanakan. Pelaksanaan termasuklah untuk pemansuhan (drop), meneruskan (forward) atau menghantar mesej ICMP kepada penghantar. Hanya persilangan yang pertama yang akan dipatuhi kerana set-set arahan akan dilihat dari atas ke bawah mengikut susunan. Oleh sebab itu, set-set arahan ini biasanya dikenali dengan akronim "rule chain".
Kriteria-kriteria persilangan paket (packet matching) bergantung kepada perisian yang digunakan tetapi pada kebiasaannya, anda boleh memperkenalkan set arahan yang bertindak ke atas alamat IP sumber paket, alamat IP destinasi paket, nombor port sumber, nombor port destinasi (untuk protokol yang membenarkan mekanisme protokol seperti TCP) sehinggakan ke jenis paket (ICMP, UDP atau TCP).
2) Jenis yang kedua ialah Pelayan Proksi atau akronim bahasa Inggerisnya, proxy server di mana ia berfungsi dengan menggunakan daemon-daemon authentication (proses-proses penentusahkan yang berjalan di background dan berinteraksi secara terus dengan sistem) dan akan meneruskan paket-paket data kepada, antaranya multi-homed host atau hos-hos biasa yang mana tidak mengaplikasikan mana-mana mekanisme packet filtering.
Pada kebiasaannya, kebanyakkan sites menggunakan kombinasi kedua-dua jenis firewall ini. Dalam hal ini, hanya sebuah atau beberapa hos yang dikenali dengan nama bastion host(s) dibenarkan untuk meneruskan paket-paket melalui packet filtering router ke dalam rangkaian dalaman. Servis-servis proxy dilarikan pada bastion host yang mana pada umumnya lebih selamat daripada mekanisme-mekanisme penentusahkan yang biasa.
Pelayan-pelayan proksi adalah hos-hos yang mempunyai sistem-sistem daemon yang biasa seperti (sshd, ftpd, httpd dll) yang telah digantikan oleh pelayan-pelayan khas yang mempunyai kefungsian yang sama. Pelayan-pelayan ini dikenali dengan sebegitu rupa kerana pada kebiasaannya, mereka akan hanya membenarkan perhubungan secara terus (onward connections) antara dunia luar atau rangkaian dalaman. Analoginya seperti pintu, anda tidak boleh langgar pintu untuk masuk. Perlu ketuk dan tunggu orang dalam buka baru boleh masuk. Seperti yang diterangkan dalam lakaran imaginatif berikut : Dalaman <--> Proksi (pintu) <--> Luaran.
Dengan adanya pelayan proksi, ia membenarkan anda untuk melarikan, sebagai contoh, pelayan proksi sshd pada hos firewall supaya pengguna dari luar boleh berssh ke firewall anda, melalui mekanisme keselamatan yang dikenakan dan kemudiannya mendapat capaian ke dalam rangkaian dalaman. Pelayan proksi juga boleh digunakan untuk perhubungan dari dalam ke luar juga.
Pelayan proksi biasanya lebih selamat daripada pelayan-pelayan biasa, dan selalunya mempunyai mekanisme-mekanisme penentusahkan yang lebih banyak; antaranya termasuklah sistem kata kunci (password) "one-shot", di mana di dalam situasi di mana seseorang berjaya mendapat kata kunci yang anda guna, beliau tidak akan dapat menggunakannya lagi pada masa akan datang untuk memecah masuk ke dalam rangkaian dalaman kerana kata kunci tersebut akan tamat tempohnya. Oleh kerana pelayan-pelayan proksi tidak memberikan capaian terus ke dalam rangkaian dalaman, adalah lebih sukar untuk seseorang untuk memasang backdoor untuk menembusi sistem keselamatan anda.
Pelayan-pelayan proksi mempunyai pelbagai cara lain untuk menyekat capaian, sehingga ke tahap di mana hanya sesetengah hos sahaja yang boleh membuat capaian ke pelayan-pelayan yang dikehendaki pada rangkaian dalaman dan selalunya dikonfigurasikan untuk membenarkan pengguna manakah yang dibenarkan untuk itu dan ini. Tetapi ini selalunya bergantung kepada jenis perisian proksi yang digunakan.
3) Jenis yang ketiga adalah Stateful Inspection (nama stateful inspection adalah registered trademark bagi Checkpoint Firewall) atau dynamic packet filtering , mempunyai ciri-ciri static packet filtering cuma ia dikatakan lebih berkesan kerana ia memantau secara lebih mendalam tentang packet-packet yang keluar masuk berdasarkan table yang dibina melalui komunikasi packet-packet tersebut dengan firewall.
Packet Filtering Router
Topologi Firewall
Ada banyak pilihan topologi firewall yang boleh digunakan dalam implementasi sekuriti rangkaian. Tetapi untuk tujuan memudahkan pemahaman dalam agar tidak bercelaru saya memilih dua topologi yang biasa digunakan dalam sebuah rangkaian kecil dan sederhana besar.
Perlu diingat, secara ringkasnya firewall memisahkan antara dua sempadan rangkaian iaitu rangkaian peribadi dan rangkaian luar iaitu internet. Dalam konteks topologi di sini, saya cuba terangkan tentang keperluan dari segi perkakasan dan sambungan yang digunakan.
Topologi Pertama
Ini adalah topologi firewall paling asas dalam sebuah rangkaian. Topologi jenis ini digunakan apabila kos merupakan faktor terpenting dalam sesebuah organisasi dan hanya satu rangkaian peribadi sahaja yang digunakan.
Jelasnya jika dilihat dari segi perkakasan dan perisian yang digunakan, kos untuk membina topologi jenis ini adalah sangat minimum .Kekurangannya pula adalah risiko yang terpaksa dihadapi jika berlaku kecuaian dalam konfigurasi firewall contohnya , tiada lagi lapisan pertahanan lain untuk melindungi rangkaian peribadi anda.
Topologi Kedua
Topologi jenis ini mempunyai rangkaian DMZ yang diletakkan di belakang firewall. Rangkaian DMZ ini boleh diakses oleh rangkaian luar untuk servis yang tertakluk kepada polisi firewall. Di sini mungkin letaknya pelayan-pelayan web dan FTP yang membenarkan pengguna luar untuk mengakses servis mereka.
Dengan cara ini akses dari luar amatlah terhad dan jika berlaku pencerobohan ia hanya terhad pada satu segmen sahaja (DMZ) kerana polisi rangkaian dalaman tidak membenarkan akses luaran.
Anda boleh rujuk keterangan di bawah tentang konsep DMZ.
Anda boleh rujuk http://www.cert.org/security-improvement/practices/p053.html untuk topologi firewall lain yang lebih lengkap.
DMZ
Pengenalan kepada DMZ
DMZ adalah "DeMilitarized Zone". Dari segi istilah diambil dari senario peperangan di mana sempadan dua zon perang dibahagikan. Zon neutral antara dua daerah peperangan ini dipanggil demilitarization zone.
Konsep DMZ didalam sebuah rangkaian pula adalah merupakan "drop zone" / zon neutral/ zon selamat untuk komunikasi antara rangkaian dalaman (internal network) dan rangkaian luar (outside network).
Polisi untuk DMZ di atas:-
i) Akses dari rangkaian internet (luaran) tidak dibenarkan masuk ke rangkaian dalaman dengan ini pengguna luar tidak dapat melihat isi kandungan sulit/rahsia kepunyaan syarikat.
ii)Pengguna dalaman boleh menggunakan rangkaian DMZ tetapi polisi tidak membenarkan rangkaian DMZ masuk ke rangkaian dalaman.
Komunikasi satu hala sahaja.
iii) Akses dari rangkaian internet (luaran) hanya boleh menggunakan servis yang berada pada rangkaian DMZ sahaja iaitu WWW,FTP dan DNS yang disediakan oleh server yang berada di dalam DMZ.
Secara praktikalnya DMZ boleh dipisahkan dengan menggunakan dua firewall yang berada antara rangkaian dalaman dan luaran.
Salah satu cara lagi menggunakan dua router dengan ACL (access control list). Firewall atau router yang digunakan tersebut akan disetkan dengan polisi seperti yang disebut di atas.
Polisi yang saya rangka di atas mungkin amat "basic" untuk memudahkan pemahaman konsep DMZ. Untuk keterangan yang lebih lanjut anda boleh rujuk laman web Cisco dan sans.org.
PERLAKSANAAN FIREWALL
Kalau komputer peribadi anda menggunakan Linux, FreeBSD atau mana-mana perisa UNIX, pada kebiasaannya sudah ada perisian packet filter yang datang dengan edaran piawai (standard distribution).
Begitu juga dengan WinXP dan Win2k, ada juga sistem firewall ringkas sudah terbina dalam tetapi perisian ini bukan untuk sekuriti tahap tinggi, hanya cukup untuk penggunaan biasa. Jika anda fikir anda adalah pengguna tahap ini dan tidak begitu kisah sama ada PC anda dijadikan robot untuk DoS, guna sahaja perisian tersebut.
Jika anda tidak menepati kriteria ini atau memang suka cuba perkara-perkara baru, boleh guna Tiny Firewall Personal Edition, SmoothWall GPL atau ZoneAlarm.
Perlu dijelaskan juga, firewall yang mempunyai set-set arahan yang banyak dan kompleks akan melengahkan trafik rangkaian. Untuk penggunaan biasa, tidak perlu PC khas untuk tugas ini, komputer peribadi anda sudah mencukupi. Sebagai contoh, di rumah saya sekarang ini ada lima komputer yang boleh dikatakan hampir setiap hari digunakan, di mana komputer peribadi saya menjadi gateway Streamyx dan pelbagai servis-servis rangkaian peribadi (apache, X, bind, dhcp dsb) dan pada masa yang sama juga, sebagai packet filtering router. Saya gunakan ipfw kerana sistem peribadi saya ialah FreeBSD dan untuk ipfw, saya gunakan set-set arahan firewall seperti yang ditunjukkan di atas. Set-set arahan tersebut tidak begitu kompleks dan optimasi boleh dilakukan dengan membenarkan paket-paket data yang telah disetup terlebih dahulu masuk dan ditapis ke dalam firewall pada turutan-turutan yang terawal. Lebih cepat sesuatu arahan memasuki chain arahan pada nilai turutan yang lebih rendah, lebih cepat ia akan diambil tindakan dan seterusnya lebih cepat data boleh dihantar kepada perisian yang sepatutnya.
Oh ya, semua perisian firewall yang saya sebut di atas adalah percuma. Untuk recommendation pada OS Windows, saya cadangkan Tiny kerana professor saya memang fanatik dengan perisian tersebut. Saya tidak lagi mempunyai kemahiran teknikal yang mendalam dalam persekitaran Windows jadi saya biasanya mengambil recommendation daripada pengguna-pengguna yang mempunyai kredibiliti.
Contoh perlaksanaan firewall menggunakan ipfw
Skrip di bawah ini adalah contoh bagaimana set-set arahan yang diterangkan di atas akan dibaca dan dilaksanakan oleh aplikasi firewall (ipfw dalam kes ini). Baris yang bermula dengan '#' adalah baris komen. Skrip ini digunakan dalam sebuah sistem personal saya sendiri yang menjalankan sistem operasi FreeBSD, versi 4.7-Stable.
CODE
Kod:
# FreeBSD ipfw1 packet filter rules set
# By : Ihsan Junaidi Ibrahim
# For : TRIGGER
# Last edited : 21/10/2002
#
# Setup system firewall service
if [ -z "${source_rc_confs_defined}" ]; then
if [ -r /etc/defaults/rc.conf ]; then
. /etc/defaults/rc.conf
source_rc_confs
elif [ -r /etc/rc.conf ]; then
. /etc/rc.conf
fi
fi
# Set quiet mode if requested
case ${firewall_quiet} in
[Yy][Ee][Ss])
fwcmd="/sbin/ipfw -q"
;;
*)
fwcmd="/sbin/ipfw"
;;
esac
# Flush out the list before we begin (default to deny)
${fwcmd} -f flush
# Setup devices and interfaces
# Loopback (lo0)
${fwcmd} add 100 pass all from any to any via lo0
${fwcmd} add 200 deny all from any to 127.0.0.0/8
${fwcmd} add 300 deny all from 127.0.0.0/8 to any
# Interfaces
oif="tun0"
iif="xl0"
# Allow local to local connections
${fwcmd} add pass all from any to any via ${iif}
# Begin rule check
# This rule is deliberately place here so that it does not interfere with
# surrounding address-checking rules.
case ${natd_enable} in
[Yy][Ee][Ss])
if [ -n "${natd_interface}" ]; then
${fwcmd} add divert natd all from any to any via ${natd_interface}
fi
;;
esac
# Allow TCP through if setup succeeded
${fwcmd} add pass tcp from any to any established
# Allow IP fragments to pass through
${fwcmd} add pass tcp from any to any frag
# Reject & log all setup of all incoming connections from the outside
${fwcmd} add deny log tcp from any to any in via ${oif}
# Name server
${fwcmd} add pass udp from any to any 53 keep-state
${fwcmd} add pass udp from any 53 to any keep-state
# SSH
${fwcmd} add pass tcp from any to any 22 setup
# Web (HTTP & HTTPS)
${fwcmd} add pass tcp from any to any 80 setup
${fwcmd} add pass tcp from any to any 443 setup
# Mail (SMTP, POP & IMAP)
${fwcmd} add pass tcp from any to any 25 setup
${fwcmd} add pass tcp from any to any 110 setup
${fwcmd} add pass tcp from any to any 143 setup
# FTP
${fwcmd} add pass tcp from any to any 21 setup
# Kazaa
${fwcmd} add pass tcp from any to any 1214 setup
# Yahoo! Messenger
${fwcmd} add pass tcp from any to any 5101 setup
${fwcmd} add pass tcp from any to any 5050 setup
# Allow all outgoing connections
${fwcmd} add pass tcp from any to any setup
# Ping
${fwcmd} add pass icmp from any to any
${fwcmd} add pass icmp from any to any
# Everything else is denied by default
Ini pula contoh output daripada arahan ipfw -a list yang menunjukkan status paket-paket data yang melalui firewall tersebut. Lihat arahan #00700 yang menangkap mana-mana paket data yang cuba untuk masuk ke dalam sistem tanpa kebenaran melalui satu-satunya link keluar yang dibenarkan, interface tun0 Mungkinkah antara paket-paket ini adalah cubaan-cubaan untuk menggodam?
CODE
Kod:
00100 82950 69263416 allow ip from any to any via lo0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 0 0 deny ip from 127.0.0.0/8 to any
00400 53953 24208025 allow ip from any to any via xl0
00500 182180 84769597 allow tcp from any to any established
00600 0 0 allow tcp from any to any frag
00700 3068 147284 deny log logamount 100 tcp from any to any in recv tun0
00800 14206 1522874 allow udp from any to any 53 keep-state
00900 11 1129 allow udp from any 53 to any keep-state
01000 0 0 allow tcp from any to any 22 setup
01100 6210 350312 allow tcp from any to any 80 setup
01200 14 696 allow tcp from any to any 443 setup
01300 0 0 allow tcp from any to any 25 setup
01400 1523 91380 allow tcp from any to any 110 setup
01500 0 0 allow tcp from any to any 143 setup
01600 0 0 allow tcp from any to any 21 setup
01700 0 0 allow tcp from any to any 1214 setup
01800 0 0 allow tcp from any to any 5101 setup
01900 0 0 allow tcp from any to any 5050 setup
02000 27 1296 allow tcp from any to any setup
02100 251 20521 allow icmp from any to any
02200 0 0 allow icmp from any to any
65535 446 27418 deny ip from any to any
Perlaksanaan dengan Smoothwall
Smoothwall adalah sebuah aplikasi firewall GPL yang saya fikirkan mudah dan sesuai untuk dijadikan satu lagi contoh perlaksanaan firewall untuk dokumentasi ini. Anda boleh download Smoothwall di www.smoothwall.org dan dapatkan versi yang terbaru. Dalam dokumentasi ini, saya telah menggunakan Smoothwall 2 versi beta 4 Mallard dan telah di "install" pada mesin AMD K6-2 300MHz dengan 128MB RAM. Konfigurasi yang dipilih adalah Topologi Pertama seperti dinyatakan di atas yang memerlukan 2 NIC .
Perisian Smoothwall ini boleh digunakan untuk menyokong internal ISDN, ethernet,modem,USB ADSL,ADSL dan ia juga mempunyai kebolehan untuk DHCP, firewall logging, VPN, IPSEC, IDS dan lain-lain lagi.
Perisian ISO yang saya download bersaiz 23MB dan boleh dibeli dalam versi CD di www.iusahawan.com . Proses installation amat mudah dan saya ringkaskan seperti di bawah.
Keperluan Perkakasan
Seperti yang saya nyatakan sebelum ini, topologi yang saya gunakan adalah dari jenis Topologi Pertama maka anda perlukan 2 NIC. Pengurusan Smoothwall adalah menggunakan pelayan web, maka apa yang anda perlukan adalah sebuah komputer biasa sebaiknya (Intel 486 ke atas) dengan perkakasan yang menyokong sistem operasi Linux tanpa keyboard dan mouse.
Proses installation
1.Setkan BIOS komputer anda supaya boot dari CDROM.
Masukkan CDROM Smoothwall dan reboot komputer anda untuk mendapatkan Smoothwall Installation Manager.
2.Pada kotak "Welcome" klik OK
3. Pilih cara installation ---> CDROM
4. Insert CDROM---> OK
5. Secara default hardisk yang dipilih adalah hardisk IDE pada /dev/hda---> OK
Pastikan tiada isi dalam hard disk anda kerana akan di "overwrite"!.
6.Configure Networking-->Probe
Saya menggunakan network card jenis COMPEX dan driver yang dikesan adalah dari jenis Realtek RTL8129 atau RTL8139---> OK
7.Configure GREEN Interface (INTERNAL)
Saya pilih IP internal berikut :-
IP: 10.0.11.254
Network Mask 255.255.255.0
8. Seterusnya memakan masa kurang dari 5 minit untuk proses installation fail-fail sistem.
9. CD eject
10 .Keyboard mapping
11. Timezone
12 .Machine hostname
13.ISDN Config-->disable if no isdn
14.ADSL USB-->disable
15.Network config menu yang anda dapat adalah:-
Network Config Type
Drivers and card assignments
Address Settings
DNS and Gateway settings
16. Pilih Network config type
MENU yang ada :-
GREEN (Red is modem/ISDN)
GREEN + ORANGE (RED is modem/ISDN)
GREEN + RED
GREEN + ORANGE + RED
17.Pilih GREEN+RED
Seterusnya, Drivers and Card assignments:
18.Enable kan RED:
Autodetected!
19.Pilih Address Settings
Pilih t RED
IP: 210.0.11.254
Netmask 255.255.255.0
20.Masukkan DNS dan Gateway settings
Primary DNS:
Secondary DNS:
Default Gateway:(mungkin IP address router anda)
21. Kalau anda mahu gunakan DHCP server
Pilih DHCP Server configurations
Letakkan Start dan End address
22.Seterusnya masukkan
Root password:
Setup password:
admin password:
23. TAMAT -mudah kan!
Pemasangan Perkakasan
Seterusnya kita boleh sambung dengan kerja-kerja pengurusan perkakasan firewall tersebut. Pada NIC pertama (GREEN) sambungkan sebuah hub/switch untuk rangkaian dalaman. Semua komputer rangkaian dalaman anda perlu disambungkan dengan hub/switch ini. Pada NIC kedua(RED), sambungkan kepada hub (seperti gambarajah) dan seterusnya kepada router. Dengan menggunakan hub/switch ia memudahkan kerja-kerja testing rangkaian luar. Anda juga boleh sambungkan terus (crossover cable) kepada router jika anda rasakan hub/switch tidak diperlukan.