Mudah dan Murah Membangun
Jaringan Internet dengan Linux Router Project Leaf Bearing
FIREWALL DENGAN IP TABLES
Keamanan Jaringan (Network Security)
dan Audit Keamanan
(Security Audit )
A.1.1 Network Security
Network terutama Internet
semakin
hari semakin berkembang. Dengan perkembangan Internet ini maka ancaman terhadap penggunanya juga semakin besar terjadi. Ancaman yang banyak terjadi dan sangat mengganggu keamanan jaringan dan pengguna jaringan adalah:
Intrusion atau break in, yaitu seseorang
mengakses jaringan kita tanpa seizin kita.
Pencurian terhadap
data yang sangat berharga/rahasia.
Penyadapan terhadap data yang kita kirim.
Virus dan worm yang sengaja merusak software komputer kita dan menurunkan kualitas jaringan kita.
Apakah sebab-sebab umum sehingga
serangan terhadap network kita tidak bisa kita tangani/bendung? Berikut
ini adalah sebab- sebabnya:
Secara fisik jaringan
kita tidak
terlindungi.
Misalnya, router ditaruh di sembarang tempat,
hub bisa diakses
orang luar, server tidak ditempatkan pada ruangan yang aman dan jaringan wireless tidak terenkripsi.
Simple password/guessable password.
Membiarkan service yang tidak aman dan rentan berjalan tanpa proteksi yang cukup. Service seperti telnet,
finger, ftp dan lain- lain
biasanya rentan
terhadap penyadapan dan buffer
overflow attack.
Menjalankan software versi lama yang ada kelemahannya. Traffic data yang tidak diatur
aksesnya.
Bagaimanakah cara membuat jaringan
kita semakin andal?
Lindungi jaringan Anda secara fisik.
Terapkan aturan
yang ketat
terhadap password dan
jangan abaikan peringatan terhadap password yang buruk. Lakukan brute force attack terhadap password file Anda dan yakinkan bahwa sebagian besar password
yang ada susah ditebak.
Lakukan proteksi
terhadap service
tertentu, jika perlu disable service tersebut.
Lakukan upgrade ke versi software terbaru, terutama jika
ada security vulnerability. Ikuti mailing list
sekuriti
dan lihat security bulletin.
Pasang firewall dan terapkan
aturan yang sesuai kalau perlu tutup semua
akses yang
tidak perlu saat
tidak dibutuhkan. Pasang antivirus
di server email
Anda dan pasang
software intrusion detection system
di router Anda untuk memonitor traffic.
A.1.2 Security Audit
Bagaimanakah cara memastikan bahwa jaringan Anda aman? Satu- satunya
jalan yang
terbaik adalah Anda sebagai System Administrator harus melakukan audit terhadap keamanan jaringan.
Pengamatan terhadap
proses yang berjalan pada server-server utama Anda.
Gunakan perintah
ps aux
untuk melihat proses-proses
apa saja
yang
berjalan. Jika ada proses yang mencurigakan, matikan
proses tersebut dengan perintah kill.
Pengamatan terhadap port-port TCP/IP yang sedang dipakai.
Pastikan tidak
ada
port mencurigakan yang terpakai.
Gunakan perintah
netstat -vat untuk melihat daftar sambungan dan port yang dipakai.
Pengamatan terhadap
versi aplikasi yang sedang berjalan.
Gunakan rpm -qi terhadap paket aplikasi yang sudah terinstal dan lihat
di website vendor Linux yang Anda pakai untuk melihat apakah ada sotfware versi baru.
Lakukan pengamatan
terhadap log file. Lihat isi file dalam direktori /var/log.
Selain cara-cara
tersebut di atas, beberapa software untuk security audit dan intrusion detection system sangat membantu tugas Anda sebagai system administrator. Contoh software tersebut adalah:
Port Sentry
Ethereal adalah software untuk melakukan penyadapan
terhadap data yang lewat. Dengan memakai ethereal, Anda bisa memonitor aktivitas
dari suatu workstation
atau IP. Keamanan
dari suatu jaringan bergantung dari
dua kunci: rajin dan tekun.
A.2 Pengenalan Firewall
Firewall adalah suatu
peralatan
keamanan
yang
menjadi satu keharusan bagi setiap komputer
yang terhubung ke Internet dan juga menjadi
suatu
jenis aplikasi
yang menyediakan sistem keamanan pada jaringan pribadi (private networks).
Perlu diingatkan di sini bahwa tanggapan global bahwa dengan adanya suatu firewall antara private
networks dengan Internet akan menyelesaikan masalah
keamanan data adalah
tidak benar sama sekali. Walaupun firewall
akan meningkatkan
keamanan, tetapi firewall yang dipasang dengan cara yang tidak benar berisiko sama seperti tanpa firewall. Pada dasarnya firewall akan menambah perlindungan terhadap
sistem private network yang
terhubung dengan Internet,
tetapi hal ini tidak akan menangkal cracker
yang benar-benar ingin masuk dan merusak sistem.
A.2.1 Apakah Firewall
Itu?
Firewall bertugas di pintu gerbang
masuk jaringan dan setiap packet yang melaluinya
perlu mematuhi policy firewall
tersebut.
Terdapat tiga
jenis
firewall yang menjadi
kegunaan umum di Internet saat ini, yaitu :
1. Packet Filtering
Router
Pada dasarnya, setiap
data yang kita kirimkan dalam jaringan
atau Internet adalah packet. Dalam packet
data ini ada yang dinamakan header dan ada yang dinamakan
body.
Kebanyakkan aplikasi firewall seperti pf (OpenBSD), ipfw/2 (FreeBSD dan NetBSD), dan iptables (Linux)
mempunyai aturan khas di dalamnya yang disebut filtering
instructions.
Pada Linux, iptables melihat header dari packet data ini untuk kemudian dianalisa apakah
akan di-deny (membiarkan packet tersebut seolah-olah tidak pernah diterima), di-accept (menerima packet tersebut
untuk diproses lebih
lanjut), atau di- reject (menolak dan memberitahu pengirim
bahwa packet data tidak bisa diterima). Aturan-aturan ini biasanya dikenal dengan akronim "rule
chain".
Kriteria-kriteria packet matching bergantung pada
kebiasaan yang digunakan, Anda
boleh
memperkenalkan aturan yang bertindak
berdasarkan alamat IP
sumber
paket,
alamat
IP
destinasi paket,
nomor port sumber, nomor
port
destinasi (untuk protokol
yang
membenarkan mekanisme protokol seperti TCP),
hingga ke
jenis
paket (ICMP, UDP atau TCP).
2. Proxy server
Fungsinya
dijalankan dengan daemon authentication (proses- proses yang berjalan di background dan berinteraksi secara terus-menerus dengan sistem) dan
akan
meneruskan paket- paket data ke multi-homed host atau host-host lain.
Kebanyakan
situs menggunakan kombinasi kedua jenis firewall ini. Dalam hal ini,
hanya sebuah atau beberapa
host yang
dikenali dengan nama bastion host(s) yang dibenarkan
untuk meneruskan
paket-paket melalui
packet filtering
router ke
dalam
private network.
A.2.2 Beberapa Skenario Penggunaan
Firewall:
Private network: Traditional proxy
Dalam skenario
ini, jaringan internal menggunakan
IP internal seperti network 192.168.0.0/24
dan lain-lain. Untuk mengakses Internet, firewall menyediakan program perantara/proxy
yang bertugas melanjutkan
permintaan akses WWW/HTTP dan FTP. Biasanya digunakan program proxy
seperti Squid, Internet Junkbuster, dan lain-lain.
Pada sistem ini, jika client
yang ada pada jaringan internal
ingin mengakses Internet,
misalnya ke detik.com, maka client
akan mengirimkan request
ke port
proxy dari firewall (biasanya
3128/8080). Kemudian proxy di firewall melanjutkan request tersebut ke
detik.com. Setelah
request dijawab, data ditransfer ke
proxy/firewall untuk kemudian
diberikan ke
client di jaringan internal.
Private network : Transparent proxy
Skenario ini hampir sama seperti di atas, namun client tidak perlu diset
untuk memakai
proxy server
karena akses ke Internet akan secara
diam-diam/tanpa sepengetahuan
client
telah dialihkan
ke program proxy.
Setiap trafik
HTTP/FTP yang melewati firewall akan di- redirect/alihkan ke port proxy (seperti 8080/3128).
Selanjutnya
seperti di atas, trafic ditangani proxy server dan setelah diterima balasannya akan dikirim
balik ke client.
Private network: Masquerading
Skenario ini sama seperti transparent proxy, namun ini bukan pengalihan traffic
ke proxy server. Ini adalah proses penggantian label trafic dari
dalam dengan
label
firewall sehingga client di jaringan lokal merasa bahwa mereka langsung tersambung ke
Internet, padahal yang terjadi
adalah saat traffic
melewati firewall, label
traffic diganti dengan
label
firewall dan saat balasan datang, label firewall dibalikkan lagi.
Limited Internal Services
Kadangkala
kita menginginkan beberapa komputer di jaringan internal kita bisa melayani
akses dari Internet dibandingkan jika firewall
yang menjalankan
service
tersebut.
Dalam
hal ini, firewall bisa mengalihkan permintaan service terhadap firewall kepada komputer pada jaringan internal. Hal ini
biasanya
disebut sebagai redirection.
Public Network
Dalam hal
ini
beberapa
komputer dalam jaringan kita mempunyai IP
global sehingga traffic mereka bisa diterima
diseluruh jaringan.
Melalui cara ini firewall hanya akan meneruskan traffic
data yang diperbolehkan kepada komputer
dalam jaringan internal
tersebut.
A.2.3 Kegunaan Firewall
Mengapa kita memakai firewall? Berikut ini adalah alasannya:
Kontrol: kita bisa memperbolehkan atau mencegah sesuatu melewati jaringan kita.
Keamanan: kita bisa membatasi
akses ke komputer kita.
Pengamatan: kita bisa memonitor data
yang keluar
masuk komputer/router kita.
A.2.4 Topologi Firewall
Ada banyak pilihan topologi
firewall yang boleh digunakan
dalam implementasinya. Akan
tetapi
untuk tujuan memudahkan
pemahaman, penulis memilih
dua
topologi yang biasa digunakan dalam sebuah rangkaian kecil dan sederhana besar.
Perlu diingat, secara ringkas firewall memisahkan dua buah jaringan komputer, yaitu jaringan pribadi
(private network) dan jaringan luar (Internet).
- Topologi Pertama
Gambar 4.1 Topologi firewall sederhana
Ini adalah topologi
firewall paling dasar dalam sebuah jaringan. Topologi jenis ini digunakan apabila hanya satu jaringan
private saja yang digunakan.
Jelasnya, jika dilihat dari segi peralatan yang digunakan, biaya untuk membina topologi jenis
ini sangat minimum.
Gambar 4.2 Topologi firewall dengan DMZ
Topologi Kedua
Topologi jenis ini
mempunyai jaringan DMZ (Demilitary Zone) yang diletakkan di belakang firewall. Jaringan
DMZ ini boleh diakses oleh jaringan luar untuk servis yang tetap terikat kepada
policies
firewall. Di DMZ dapat diletakkan layanan-layanan web dan FTP yang memperbolehkan
pengguna luar untuk mengakses servis tersebut.
Dengan cara ini akses dari luar
hanya akan diarahkan
pada satu
segmen DMZ saja dan jaringan dalam tidak boleh diakses dari luar.
A.3 IPTables
Dalam iptables ada tiga
label utama, yaitu:
INPUT
: packet data yang masuk dari interface kita OUTPUT
: packet data yang keluar dari interface kita FORWARD : packet data yang menumpang untuk lewat
Gambar 4.3 Algoritma keputusan routing
A.3.1 Operasi pada Iptables
Berikut ini adalah operasi dalam Iptables:
Tabel operasi pada Iptables
Operasi
|
Opsi
|
Membuat chain baru
|
-N
|
Menghapus chain kosong
|
-X
|
Merubah aturan dari suatu chain
|
-P
|
Melihat daftar rules
|
-L
|
Menghapus seluruh rules
|
-F
|
Menolkan hitungan paket dan byte dalam suatu chain
|
-Z
|
Menambahkan rule
baru pada suatu chain
|
-A
|
Memasukkan rule baru pada posisi tertentu dalam suatu chain
|
-I
|
Mengganti rule
pada suatu chain
pada posisi tertentu
|
-R
|
Menghapus rule pada chain tertentu dan pada posisi tertentu atau yang sesuai
dengan spesifikasi
|
-D
|
A.3.2 Parameter Iptables
Parameter
digunakan untuk membuat aturan lebih spesifik (biasanya digunakan pada penambahan, penghapusan, penyisipan, atau operasi penggantian).
Tabel parameter pada Iptables
Parameter
|
Opsi
|
Menunjukkan nama protokol
yang digunakan, bisa tcp, udp, icmp, atau all
|
-p
|
Menunjukkan source addres
|
-s
|
Menunjukkan destinasi address
|
-d
|
|
-j
|
Menunjukkan input dari interface
|
-i
|
Menunjukkan output dari interface
|
-o
|
Table Filter chain Forward
Nama Subnet
|
192.168.1.0
|
192.168.2.0
|
192.168.1.0
|
|
ACCEPT
|
192.168.2.0
|
ACCEPT
|
|
Perintah Iptables adalah sebagai
berikut :
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
# iptables -P FORWARD DROP
Perintah di atas dibuat agar seluruh kebijakan pertama
policy untuk
pertama kali adalah DROP.
Perintah untuk melewatkan
paket dari network A ke network B
melalui router adalah sebagai berikut :
# echo 1>/proc/sys/net/ipv4/ip_forward
# iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
# iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
Arti perintah di atas berturut-turut adalah sebagai berikut: Memastikan baris forwarding diaktifkan
Membuat agar network A dapat menyapa B
Membuat agar network B dapat menyapa network A
Pilihan:
Jika diinginkan
A langsung dijawab oleh
B hanya untuk setiap kali A
melakukan panggilan maka perintahnya adalah sebagai berikut:
#iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
#iptables -A FORWARD -i eth1 -o -m state --state
ESTABLISHED - j ACCEPT
Jika diinginkan
agar hanya host tertentu saja,
yaitu B2,
yang dapat menjawab
panggilan A1 maka gunakan perintah berikut:
#iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
#iptables -A FORWARD -i eth1 -o eth0 -s 192.168.1.6
-d
192.168.2.5 -m state --state ESTABLISHED -j ACCEPT
Perintah agar firewall dapat di-remote dari
B1 adalah:
# iptables -A INPUT -p tcp -s 192.168.1.5 --dport 22 - j
ACCEPT
# iptables -A OUTPUT -o eth1 -m state --state
ESTABLISHED -j ACCEPT
A.3.4 Kegunaan IPTables
Dengan iptables
kita bisa memperketat keamanan jaringan atau server-server kita:
Membatasi akses
ke jaringan kita
untuk traffic
data tertentu saja. Memfilter serangan dari luar.
Membatasi akses ke
service-service dalam komputer kita.
Hal-hal apakah yang perlu difilter dan tidak perlu atau tidak boleh difilter? Hal yang tidak boleh difilter adalah:
ICMP packets
TCP conections ke DNS FTP data
Packet apakah yang harus difilter?
Ping of death (Packet ping
yang besar)
Teardrop dan Bonk (IP Defragmentation)
Fragment Bomb
(IP Fragment)
IP Spoof (pengirimyang berpura-pura berasal dari IP dalam)
Skenario:
Misalnya kita ingin
melihat port berapa saja yang sedang dibuka oleh
klien, jalankan perintah
(dari komputer client):
#nmap 192.168.1.5
atau
# nmap localhost
maka akan terlihat hasil seperti berikut:
2004-09-13 21:10 EDT
Interesting ports on localhost
(127.0.0.1):
(The 1631 ports scanned but not shown below are in state:
Port
|
State
|
Service
|
21/tcp
|
open
|
ftp
|
22/tcp
|
open
|
ssh
|
25/tcp
|
open
|
smtp
|
80/tcp
|
open
|
http
|
111/tcp
|
open
|
sunrpc
|
139/tcp
|
open
|
netbios-ssn
|
|
|
closed)
199/tcp
|
open
|
smux
|
443/tcp
|
open
|
https
|
631/tcp
|
open
|
ipp
|
701/tcp
|
open
|
unknown
|
921/tcp
|
open
|
unknown
|
2049/tcp
|
open
|
nfs
|
10000/tcp
|
open
|
snet-sensor-mgmt
|
Nmap run completed -- 1 IP address (1 host up) scanned in
2.387 seconds
Apabila di router diatur agar
klien/host
192.168.1.5 tidak dapat melakukan koneksi ke mana pun
dengan perintah berikut:
#iptables -A FORWARD -s 192.168.1.5 -j DROP
maka hasil perintah:
#nmap localhost
akan terlihat sebagai berikut:
2004-09-13 21:09 EDT
Note: Host seems down. If it is really up, but blocking our
ping probes, try -P0
Nmap run completed
-- 1 IP address (0 hosts up) scanned in
12.066 seconds
Jika host 192.168.1.5
diatur agar tidak dapat mengakses service
HTTP dari Internet, gunakan sintaks sebagai berikut:
#iptables -A FORWARD -p tcp -s 192.168.1.5 --dport 80 -j
DROP
Cara mengeceknya:
1. Coba akses web
dari host 192.168.1.5. Seharusnya akses tidak akan bisa dilakukan.
2. Gunakan perintah nmap dari
local host tersebut.
#nmap 192.168.1.5
Hasilnya adalah sebagai berikut:
Starting nmap 3.30 ( http://www.insecure.org/nmap/ ) at
2004-09-13 21:10 EDT
Interesting ports on localhost
(127.0.0.1):
(The 1631 ports scanned but not shown below are in
state: closed)
Port State
Service
21/tcp
|
open
|
ftp
|
22/tcp
|
open
|
ssh
|
25/tcp
|
open
|
smtp
|
80/tcp
|
open
|
http
|
111/tcp
|
open
|
sunrpc
|
139/tcp
|
open
|
netbios-ssn
|
199/tcp
|
open
|
smux
|
443/tcp
|
open
|
https
|
631/tcp
|
open
|
ipp
|
701/tcp
|
open
|
unknown
|
921/tcp
|
open
|
unknown
|
2049/tcp
|
open
|
nfs
|
10000/tcp
|
open
|
snet-sensor-mgmt
|
Nmap run completed -- 1 IP address (1 host up) scanned in 2.387 seconds
Terlihat bahwa pada localhost 192.168.1.5 tersebut service port
80 terbuka, tetapi
ternyata
setelah
difilter koneksinya oleh router maka local host tersebut tidak dapat mengakses layanan HTTP.
A.4 Network Address Translation (NAT)
Network Address
Translation adalah suatu
mekanisme penghematan IP Adress yang valid. Mekanisme
ini dapat diterapkan dalam IPtables
dengan DNAT
dan SNAT.
A.4.1 Mekanisme NAT
Sebuah paket
TCP terdiri dari header dan data.
Header memiliki sejumlah
field di dalamnya. Beberapa field yang penting adalah MAC (Media Access Control) address asal
dan tujuan, IP address asal dan tujuan,
serta nomor port
asal dan tujuan.
Saat mesin A menghubungi mesin B, header paket berisi IP A dan IP B sebagai IP address tujuan. Header
ini juga berisi nomor port asal (biasanya dipilih oleh mesin pengirim
dan sekumpulan nomor pert) dan nomor port
tujuan yang spesifik, misalnya port 80 (untuk web).
Kemudian B menerima paket pada port
80 dan memilih nomor port balasan untuk digunakan
sebagai nomor port asal menggantikan port 80 tadi. Mesin B lalu membalik IP
address asal dan tujuan dan
nomor port asal dan tujuan dalam header
paket sehingga sekarang
IP B adalah IP address asal dan IP A adalah IP address tujuan. Berikut ini contoh-contoh penerapan
NAT menggunakan Iptables.
DNAT
Destination
NAT berfungsi untuk mentranslasikan suatu alamat sebelum proses routing. Biasanya
ini digunakan agar penerima pesan tidak mengetahui alamat asli pengirim pesan.
SNAT
Source NAT berfungsi untuk mentranslasikan suatu alamat setelah proses routing.
Masqurade
Fungsi Masqurade
sebenarnya
hampir
sama
seperti
SNAT, tapi dikhususkan untuk koneksi dengan dial/protocol PPP.
LOG
Log berfungsi untuk melihat seluruh proses yang ada di jaringan komputer. Cara menggunakannya:
/usr/sbin/iptables -N spam
/usr/sbin/iptables
-A spam -j LOG --log-prefix "Spam
from: " /usr/sbin/iptables -A spam -j DROP
/usr/sbin/iptables -A INPUT
-s 200.143.234.78 -j spam