Designing and Implementing Linux Firewall and QoS (SOHO)

A. Pengertian
     Pada dasarnya pembuatan topologi dan juga implementasi berikut ini merupakan suatu hal dimana kita bisa belajar dan memahami terkait linux router dan juga implementasi nya pada suatu instansi, dengan memanfaatkan fitur ip tables,
     Iptables adalah user-space program aplikasi yang memungkinkan administrator sistem untuk mengkonfigurasi tabel disediakan oleh kernel Linux firewall (diimplementasikan sebagai berbeda Netfilter modul) rantai dan aturannya. modul kernel yang berbeda dan program yang saat ini digunakan untuk protokol yang berbeda; iptables berlaku untuk IPv4, ip6tables ke IPv6, arptables untuk ARP , dan ebtables untuk frame Ethernet.

B. Latar Belakang
     Pembangunan topologi ini didasari dari suatu buku yang ditulis oleh pengembang linux berjudul designing and implementing linux firewall and qos, dimana pada buku ini dijelaskan bagaimana bisa membangun suatu linux router yang terintegrasi dengan beberapa fitur pendukung antara lain, linux firewall dan pembatasan bandwith dengan qos,

C. Maksud dan Tujuan
     Dengan pembuatan topologi dan konfigurasi untuk membangun suatu server yang terkoneksi dengan linux router,

D. Alat dan Bahan
  • PC untuk debian router dengan 3 nic
  • PC debian server
  • PC untuk, (dekstop, children, gaming, print)
  • Access point untuk meneruskan ke client
  • Kabel straight
  • ISO bootable debian 8.6

 E. Tahap Pelaksanaan


1. Setting up the Network
pada eth0 mendapatkan koneksi pppoe client bisa dilihat pada tutorial sebelumnya, untuk eth1 di dhcp agar bisa connect ke client,
#ifconfig eth1 192.168.140.1 netmask 255.255.255.240 up
#apt-get install isc-dhcp-server

Selanjutnya edit dengan perintah:
   subnet 192.168.140.0 netmask 255.255.255.240 {
      range 192.168.140.2 192.168.140.13;
      option domain-name-servers 192.168.140.1,202.134.1.10,202.134.0.155;
      option routers 192.168.140.1;
      option subnet-mask 255.255.255.240;
      option broadcast-address 192.168.140.15;
      default-lease-time 600;
      max-lease-time 7200;
      }

Kemudian editlah pada nano /etc/dhcpd.conf tambahkan pada baris paling bawah, untuk pengisian mac address di sesuaikan dengan yang di dapat dari koneksi jaringan nya,

host children {
hardware ethernet 02:03:04:05:06:07;
fixed-address 192.168.140.4;
option name-servers 192.168.140.1,202.134.1.10,202.134.0.155;
option routers 192.168.140.1;
option subnet-mask 255.255.255.240;
option broadcast-address 192.168.140.15;
}
host desktop {
hardware ethernet 02:03:04:05:06:08;
fixed-address 192.168.140.3;
option name-servers 192.168.140.1,202.134.1.10,202.134.0.155;
option routers 192.168.140.1;
option subnet-mask 255.255.255.240;
option broadcast-address 192.168.140.15;
}
host printer {
hardware ethernet 02:03:04:05:06:09;
fixed-address 192.168.140.6;
option name-servers 192.168.140.1,202.134.1.10,202.134.0.155;
option routers 192.168.140.1;
option subnet-mask 255.255.255.240;
option broadcast-address 192.168.140.15;
}
host gaming {
hardware ethernet 02:03:04:05:06:10;
fixed-address 192.168.140.5;
option name-servers 192.168.140.1,202.134.1.10,202.134.0.155;
option routers 192.168.140.1;
option subnet-mask 255.255.255.240;
option broadcast-address 192.168.140.15;
}

Setelah itu, edit juga pada /etc/init.d/dhcp untuk konfisurasi dhcp server bisa dilihat pada tutorial sebelumnya, disini kita atur pada dpkg-reconfigure isc-dhcp-server
# Default
INTERFACE="eth1"
kemudian jalankan dengan /etc/init.d/dhcp start atau bisa kita cek dengan merestart, jika ada failed coba pastikan apakah interface yang kita masukkan sudah benar atau belum,

2. Building the Firewall
install squid nya terlebih dahulu, seprti pada konfigurasi di tutorial sebelumnya,
kemudian, edit pada /etc/squid/squid.conf

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

acl all src 0.0.0.0/0.0.0.0
acl our_network src 192.168.140.0/28
acl porn url_regex -i sex adult porn hardcore fetish
acl downloads urlpath_regex \.exe$ \.rar$ \.zip$ \.pif$ \.scr$

http_access deny porn
http_access deny downloads
http_access allow our_network
http_access deny all

kemudian aktifkan jalur nat nya
#modprobe ip_nat_ftp
#modprobe ip_nat_irc

kemudian tambahkan konfigurasi berikut pada rc.local
-untuk gaming

iptables –t nat –A PREROUTING –p udp –-dport 6500 –j DNAT –-to
192.168.140.5
iptables –t nat –A PREROUTING –p udp –-dport 6700 –j DNAT –-to
192.168.140.5

-untuk printer 
iptables –t nat –A POSTROUTING –o ppp0 –s 192.168.140.6 –j DROP

-untuk children
iptables -t nat -A PREROUTING -s 192.168.140.3 -p tcp --dport 80 -j
REDIRECT --to-port 3128

untuk penjelasan lebih mendalam konfigurasi ip tables yang digunakan silahkan ikuti konfigurasi pada gambar berikut, jangan lupa untuk dilihat penyesuaian ip nya,


Selanjutnya, bisa dilihat untuk verifikasi ip tables yang dibuat dengan
iptables -t nat -L

3. QoS Bandwith Allocation
-untuk konfigurasi awal alokasi bandwith yang diberikan
tc qdisc add dev eth1 root handle 1: htb
tc class add dev eth1 parent 1:0 classid 1:10 htb rate 100Mbit
tc class add dev eth1 parent 1:10 classid 1:20 htb rate 1Mbit

-untuk gaming
tc class add dev eth1 parent 1:20 classid 1:100 htb rate 128Kbit ceil
1Mbit
tc qdisc add dev eth1 parent 1:100 sfq quantum 1514b perturb 15
tc filter add dev eth1 protocol ip parent 1:0 prio 5 u32 match ip dst
192.168.1.200 flowid 1:100

-untuk children
tc class add dev eth1 parent 1:20 classid 1:200 htb rate 256Kbit ceil
1Mbit
tc qdisc add dev eth1 parent 1:200 sfq quantum 1514b perturb 15
tc filter add dev eth1 protocol ip parent 1:0 prio 5 u32 match ip dst
192.168.1.55 flowid 1:200

-untuk dekstop
tc class add dev eth1 parent 1:20 classid 1:300 htb rate 256Kbit ceil
1Mbit
tc qdisc add dev eth1 parent 1:300 sfq quantum 1514b perturb 15
tc filter add dev eth1 protocol ip parent 1:0 prio 5 u32 match ip dst
192.168.1.11 flowid 1:300

-untuk laptop/client (AP)
tc class add dev eth1 parent 1:20 classid 1:400 htb rate 256Kbit ceil
1Mbit
tc qdisc add dev eth1 parent 1:400 sfq quantum 1514b perturb 15
tc filter add dev eth1 protocol ip parent 1:0 prio 5 u32 match ip dst
192.168.1.0/24 flowid 1:400

Setelah itu untuk melihat konfigurasi qos yang tadi dibuat maka silahkan ketikan perintah:
root@router:~# tc class show dev eth1
class htb 1:10 root rate 100000Kbit ceil 100000Kbit burst 126575b
cburst 126575b
class htb 1:100 parent 1:20 leaf 8081: prio 0 rate 128000bit ceil
1000Kbit burst 1759b cburst 2849b
class htb 1:20 parent 1:10 rate 1000Kbit ceil 1000Kbit burst 2849b
cburst 2849b
class htb 1:200 parent 1:20 leaf 8082: prio 0 rate 256000bit ceil
1000Kbit burst 1919b cburst 2849b
class htb 1:300 parent 1:20 leaf 8083: prio 0 rate 256000bit ceil
1000Kbit burst 1919b cburst 2849b
class htb 1:400 parent 1:20 leaf 8084: prio 0 rate 256000bit ceil
1000Kbit burst 1919b cburst 2849b

Selanjutnya, kita perlu melihat apakah paket yang terkirim ke alamat ip tujuan bisa sesuai dengan alokasi yang di buat,

root@router:~# ping -f -c 10 192.168.140.5
PING 192.168.1.200 (192.168.1.200) 56(84) bytes of data.
--- 192.168.1.200 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 3ms
rtt min/avg/max/mdev = 0.198/0.210/0.300/0.033 ms, ipg/ewma
0.394/0.230 ms

root@router:~# tc -s class show dev eth1 | fgrep -A 4 1:100
class htb 1:100 parent 1:20 leaf 808d: prio 0 rate 128000bit ceil
1000Kbit burst 1759b cburst 2849b
Sent 980 bytes 10 pkts (dropped 0, overlimits 0)
lended: 10 borrowed: 0 giants: 0
tokens: 40962 ctokens: 12387

G. Hasil dan Kesimpulan
Konfigurasi ini berhasil sesuai dengan rancangan topologi yang dibuat, hal yang perlu diperhatikan dalam konfigurasi ini adalah ketelitian kita dalam menerjemahkan suatu maksud dari pada topologi tersebut dan yang utama adalah pemahaman terhadap maksud dari ip tables,

H. Referensi
Buku Designing and Implementing Linux Firewall and QoS
https://en.wikipedia.org/wiki/Iptables

Share this

Related Posts

Previous
Next Post »