Firewall & Bandwidth Management by Henry Saptono henry@nurulfikri.com, boypyt@yahoo.com http://www.nurulfikri.com Jan 2007
Network Diagram
Network Diagram (with PC gateway)
Network Diagram (with PC gateway)
Kata Kunci
Router Device dedicated yang berfungsi mengatur proses 'routing' antar jaringan komputer
Firewall Mekanisme untuk melakukan Paket Filtering, Paket Investigasi, dan Paket manipulasi. Diimplementasikan pada level “Kernel Space” yang berupa modul atau built in Secara logik sebagai node khusus dalam jaringan komputer
Gateway Mengatur “proses static routing” antar jaringan. Dalam wujud PC. Diimplementasikan pada level “kernel space”, umumnya sebagai fungsi built in.
Linux sebagai Sistem Operasi yang mendukung Jaringan Sistem operasi linux memiliki ragam bentuk fungsi-fungsi “ dukungan jaringan (Networking Support)”, diantaranya sbb: Routing (IP Forwarding) Firewall (Netfilter) QoS (Quality Of Service) Tunneling IPsec(vpn) LVS, dan lain -lain
Implementasi Linux Gateway Fungsi linux sebagai gateway (IP Forwarding) adalah fungsi built-in pada kernel Perlu diaktifkan pada saat 'boot' echo 1 > /proc/sys/net/ipv4/ip_forward Atau edit file /etc/sysctl.conf, dan set parameter net.ipv4.ip_forward=1 Jika diperlukan mengatur tabel routing (gunakan perintah 'route' )
Ilustrasi IP Forwarding
Internet Sharing Internet sharing : berbagi akses koneksi internet pada sebuah koneksi internet. Implementasinya pada level 'kernel space' melibatkan fungsi-fungsi kernel yaitu : IP forwarding(routing/gateway) dan IP Masquerading (Netfilter/IPtables)
Internet sharing Di Linux Langkah-langkah menerapkannya, sbb: IP Forwarding (gateway) echo 1 > /proc/sys/net/ipv4/ip_forward Atau, vi /etc/sysctl.conf net.ipv4.ip_forward=1 IP Masquerading iptables -t nat -A POSTROUTING -s 192.168.0.0/24 - o eth0 -j MASQUERADE
Ilustrasi IP Masquerade
Klasifikasi Firewall Firewall dapat diklasifikasikan secara umum terdiri dari 2 class: Proxy (Dual homed host) Packet Filter (screening router)
Firewall(packet filter) Diimplementasikan pada level 'kernel space', dengan nama fungsi “netfilter” , dalam bentuk modul. Cek dukungan kernel terhadap netfilter sbb: grep -i netfilter /boot/config-2.6.13
Konfigurasi kernel
Tool Administrasi Firewall Tool administrasi firewall (netfilter) di linux disediakan secara default dalam bentuk perintah (command) 'iptables'
Iptables netfilter/iptables terdiri dari 3 tabel: filter, nat, mangle Perintah 'iptables' digunakan untuk mengelola, memaintain, menginspeksi rule- rule IP packet filter dalam kernel linux.
Tabel Filter filter: This is the default table (if no -t option is passed). It contains the built-in chains INPUT (for packets destined to local sockets), FORWARD (for packets being routed through the box), and OUTPUT (for locally-generated packets).
Tabel nat nat: This table is consulted when a packet that creates a new connection is encountered. It consists of three built-ins: PREROUTING (for altering packets as soon as they come in), OUTPUT (for alteringlocally-generated packets before routing), and POSTROUTING (for altering packets as they are about to go out).
Tabel mangle mangle: This table is used for specialized packet alteration. Until kernel 2.4.17 it had two built-in chains: PREROUTING (for altering incoming packets before routing) and OUTPUT (for altering locally-generated packets before routing). Since kernel 2.4.18, three other built-in chains are also supported: INPUT (for packets coming into the box itself), FORWARD (for altering packets being routed through the box),and POSTROUTING (for altering packets as they are about to go out).
iptables - administration tool for IPv4 packet filtering and NAT SYNOPSIS iptables [-t table] -[AD] chain rule-specification [options] iptables [-t table] -I chain [rulenum] rule-specification [options] iptables [-t table] -R chain rulenum rule-specification [options] iptables [-t table] -D chain rulenum [options] iptables [-t table] -[LFZ] [chain] [options] iptables [-t table] -N chain iptables [-t table] -X [chain] iptables [-t table] -P chain target [options] iptables [-t table] -E old-chain-name new-chain-name
Diagram netfilter/iptables
Contoh perintah iptables Sebuah rule iptables dapat menspesifiksikan sumber paket (-s), tujuan paket (-d) , protokol (-p), dan port. Sebagai contoh , untuk memblok (deny) seuatu paket yang datang dari IP address 192.168.0.254 , sebgai berikut: iptables -t filter -A INPUT -s 192.168.0.254 -j DROP filter adalah default table jika option -t tidak disertakan.
Contoh perintah iptables Jika tanda "!" disertakan didepan ip address sumber atau tujuan , ini menyatakan negasi dari ip address tersebut. iptables -t filter -A OUTPUT -d ! 192.168.0.254 -j DROP Rule diatas memblok semua paket dari local komputer firewall yang ditujukan ke semua ip address kecuali ke ip address 192.168.0.254. Incoming atau Outgoing interface dapat di spesifikasikan sebagai berikut: iptables -t filter -A INPUT -s 192.168.0.251 -i eth1 -j DROP
iptables dan NAT Network Address Translation dapat ditampilkan oleh kernel 2.4 dalam bentuk satu dari dua buah cara , yaitu: source NAT (SNAT) dan destination NAT (DNAT). DNAT sering digunakan untuk membelokkan (redirect) paket yang datang ke suatu interface dan diarahkan menjadi ke lokasi lain, seperti ke mesin proxy(squid proxy server). SNAT digunakan untuk menyembunyikan source address dari paket dengan cara memetakan ulang source address paket yang keluar ke IP address komputer yang lain atau rentang address yang lain. Kernel 2.4 secara otomatis melakukan reverse-translate semua paket-paket NAT yang dimaksud.
Ilustrasi DNAT
Ilustrasi SNAT
Contoh NAT Untuk mengimplementasikan ip masquerading lakukan hal-hal sebagai berikut, : iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE Untuk menerapkan REDIRECT untuk keperluan membelokkan paket web secara transparan yang datang pada interface eth0 ke proxy server pada firewall itu sendiri, jalankan perintah berikut: iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j REDIRECT –to-port 3128
Contoh NAT Untuk menerapkan destination NAT untuk keperluan membelokkan paket web secara transparan yang datang pada interface eth0 ke 192.168.0.1, jalankan perintah berikut: iptables -t nat -A PREROUTING -p tcp -m multiport --dport 80,443 -i eth0 -j DNAT --to-destination 192.168.0.1 Untuk merubah source address melalui SNAT menjadi ip address 192.168.0.33 dengan port 1024 sampai 65535, gunkan perintah berikut: iptables -t nat -A POSTROUTING -p tcp -o eth1 -j SNAT --to 192.168.0.33:1024-65535
Shorewall Shoreline Firewall atau lebih dikenalnya dengan istilah shorewall adalah tool tingkat tinggi yang digunakan untuk konfigurasi netfilter/iptables (firewall di linux). Untuk implementasi firewall dengan shorewall Anda harus mengkonfigurasi beberapa file konfigurasi shorewall seperti file zones, interfaces, policy, masq, dan rules. Semua file konfigurasi shorewall terletak dalam folder /etc/shorewall.
Konfigurasi Shorewall Langkah pertama, edit file /etc/shorewall/shorewall.conf untuk mengenable atau mengaktifkan shorewall, carilah parameter “STARTUP_ENABLED”, kemudian set parameter tersebut sebagai berikut: STARTUP_ENABLED=Yes Langkah kedua, editlah file /etc/shorewall/zones untuk mendefinisikan zone (segment) jaringan yang ada. Dalam contoh ini kita anggap firewall memiliki 2 buah interface network masing-masing terhubung dengan zone net (internet) dan zone loc (LAN). Lihat contoh berikut ini: #ZONE TYPE OPTIONS IN OUT # OPTIONS OPTIONS fw firewall net ipv4 loc ipv4 #LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE
Konfigurasi Shorewall Langkah ketiga, editlah file /etc/shorewall/interfaces untuk mendefinisikan interface network mana sajakah yang ada pada komputer firewall dan terhubung dengan zone mana sajakah.Lihat contoh berikut ini: #ZONE INTERFACE BROADCAST OPTIONS net eth0 detect loc eth1 detect #LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE
Konfigurasi Shorewall Langkah keempat, editlah file /etc/shorewall/policy untuk mendefinisikan default kebijakan firewall pada masing-masing zone yang telah didefinisikan. Lihat contoh berikut ini: #SOURCE DEST POLICY LOG LIMIT:BURST # LEVEL fw all ACCEPT loc fw DROP info loc net DROP info net fw DROP info net loc DROP info all all DROP #LAST LINE -- DO NOT REMOVE
Konfigurasi Shorewall Langkah kelima, editlah file /etc/shorewall/masq untuk memungkinkan masquerade paket dari LAN yang akan keluar dari firewall menuju internet. Lihat contoh berikut ini: #INTERFACE SUBNET ADDRESS PROTO PORT(S)IPSEC eth0 eth1 #LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE
Konfigurasi Shorewall Langkah keenam, editlah file /etc/shorewall/rules untuk mendefinisikan rule-rule firewall selain rule default yang telah didefinisikan dalam file /etc/shorewall/policy. Lihat contoh berikut ini: SECTION NEW ACCEPT net:202.159.11.154 fw ACCEPT loc:192.168.1.100 fw REDIRECT loc:!192.168.1.31 3128 tcp www ACCEPT net:202.159.11.154 fw tcp 20,21,22,25,53,80 ACCEPT net:202.159.11.154 fw udp 20,21,22,25,53,80 ACCEPT loc net tcp 20,21,22,25,53,80,443 ACCEPT loc net udp 20,21,22,25,53,80,443 #LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE
Bandwidth Management Bandwidth Management (Traffic Control/Shaping) adalah suatu istilah yang ditujukan pada suatu subsistem antrian packet dalam/pada suatu jaringan atau network devices. Secara singkat traffic control/shaping adalah suatu usaha mengontrol traffic jaringan sehingga bandwidth lebih optimal dan performa network lebih terjamin. Fungsi dan operasi traffic control pada kernel linux terdiri dari komponen-komponen berikut ini: queueing disciplines (qdisc) classes filters policer
Bandwidth Management Queueing discipline (Qdisc) bertanggungjawab untuk mentransmisikan data. Classes dipasang pada qdisc dan mengandung/berisi traffic. Setiap class yang tidak memiliki child class selalu memiliki 1 qdisc yang berasosiasi dengannya untuk mentransmisikan paket-paket data, dan qdisc tersebut menampung seluruh traffic yang masuk/mengalir ke dalam class tersebut. Filters dipasang pada qdisc dan class dan men-split traffic menjadi beberapa child-class yang berbeda. Policers digunakan untuk meyakinkan filters sesuai/match hanya dengan satu rate paket tertentu. Policers dapat dishare oleh beberapa filter berbeda dan pada interface-interface berbeda.
Bandwidth Management Bandwidth Management (Trfaffic Control/Shaping) adalah mekanisme mengelola dan memaintain traffic yang dibangkitkan oleh suatu Interface Network. Bandwidth Management diimplementasikan pada level 'kernel space' Merupakan bagian dari fungsi QoS. Cek dukungan kernel sbb: # grep -i qos /boot/config-2.6.17
Konfigurasi kernel
Tool administrasi traffic shaping Untuk mengelola dan memaintain trraffic digunakn tool administrasi yang disediakan dalam bentuk perintah 'tc'. tc merupakan tool yang berasal dari paket software 'iproute' atau 'iproute2'
tc - show / manipulate traffic control settings SYNOPSIS tc qdisc [ add | change | replace | link ] dev DEV [ parent qdisc-id |root ] [ handle qdisc-id ] qdisc [ qdisc specific parameters ] tc class [ add | change | replace ] dev DEV parent qdisc-id [ classid class-id ] qdisc [ qdisc specific parameters ] tc filter [ add | change | replace ] dev DEV [ parent qdisc-id | root ] protocol protocol prio priority filtertype [ filtertype specific parameters ] flowid flow-id tc [-s | -d ] qdisc show [ dev DEV ] tc [-s | -d ] class show dev DEV tc filter show dev DEV
Diagram hubungan netfilter dan TC
Skenario Traffic Shaping Traffic shaping hanya akan efektif diimplementasikan pada Outgoing traffic/bandwith Outgoing traffic diterapkan sebagai TC EGRESS
Spesifikasi Bandwidths / rates kbps :Kilobytes per second mbps :Megabytes per second kbit :Kilobits per second mbit :Megabits per second
Konfigurasi Shorewall sbg Traffic controll Langkah pertama dalam implementasi traffic controll menggunakan shorewall adalah mengenable Traffic Controll (TC) pada file konfigurasi utama shorewall (/etc/shorewall/shorewall.conf). Sebelumnya diasumsikan konfigurasi shorewall sebagai firewall dan gateway telah dilakukan dengan baik dan benar. Dalam file tersebut carilah parameter “TC_ENABLED”, dan pastikan atau set nilai parameter tersebut menjadi ssb: TC_ENABLED=Internal Langkah kedua editlah file /etc/shorewall/tcdevices, untuk menentukan pada device manakah akan Anda terapkan pengontrolan bandwidth, serta berapakan maksimum incoming dan outgoing bandwidth. Sebagai contoh kita akan mengatur agar bandwidth maksimum yang datang ke devices eth1 sebesar 512kbit dan bandwidth outgoing (traffic download dari client/ LAN) maksimum sebesar 384kbit. Lihat contoh berikut ini: #INTERFACE IN-BANDWITH OUT-BANDWIDTH eth1 512kbit 384kbit #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
Konfigurasi Shorewall sbg Traffic controll Langkah ketiga editlah file /etc/shorewall/tcclasses, untuk menentukan atau mendefinisikan class-class pada qdisc. Sebagai contoh kita akan mendefinisikan 3 buah class , class pertama dengan prioritas utama memiliki rate 50% dari bandwidth (outgoing bandwidth) yang ada. Dan class yang kedua 30%, class yang ketiga 20% sebagai default class. Lihat contoh berikut ini: #INTERFACE MARK RATE CEIL PRIORITY OPTIONS eth1 1 full*5/10 full 0 eth1 2 full*3/10 full*5/10 1 eth1 3 full*2/10 full*5/10 2 default #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
Konfigurasi Shorewall sbg Traffic controll Langkah keempat editlah file /etc/shorewall/tcrules, untuk menentukan atau mendefinisikan rule klasifikasi traffic. Dalam file ini menentukan traffic manakah yang masuk dalam class -class yang telah kita definisikan dalam file tcclasses. Lihat contoh sebagai berikut: #MARK SOURCE DEST PROTO PORT(S) CLIENT USER TEST # PORT(S) 1:F 0.0.0.0/0 0.0.0.0/0 icmp 1:F 0.0.0.0/0 192.168.1.2 all 2:F 0.0.0.0/0 192.168.1.3 tcp - 80,443 3:F 0.0.0.0/0 192.168.1.100 all #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
Konfigurasi Shorewall sbg Traffic controll Langkah kelima, restartlah shorewall dengan perintah sbb: #shorewall restart Kemudian checklah qdisc dan class sbb: #shorewall show tc Dan terakhir cobalah Anda uji dan amati dengan mengakses server di internet (http,https,ssh dll) dari LAN atau dari IP - IP yang dicontohkan dalam tcrules (misal ip 192.168.1.2, 192.168.1.3, 192.168.1.100)
Referensi www.google.com www.iptables.org www.shorewall.net www.docum.org www.linuxhomenetworking.com