Senin, 04 Mei 2015

Mikrotik : Layer 7 Protocol, Redirect HTTP To External Proxy, Firewall

__________________________________


TERIMA KASIH TELAH BERKUNJUNG TEMAN !
SEBELUM MELANJUTKAN MEMBACA, TOLONG SUBSCRIBE KE CHANNEL YOUTUBE SAYA YA KAWAN.
CARANYA KLIK TOMBOL MERAH DIATAS.

____________________________________________________________________________________________________________________________________
________________________




Hai !!, kali ini saya akan menunjukkan cara konfigurasi mikrotik untuk memblokir situs-situs pada jam tertentu, dan melakukan redirect traffic http ke external proxy. Adapun topology jaringan yang akan digunakan akan tergambar melalui daftar ip berikut :
DMZ Hosts (Servers) : 172.16.16.0/24
Users / clients : 192.168.0.0/16
IP Backbone : 10.0.0.0/24
Proxy Server : 172.16.16.106
Router Gateway : Mikrotik
Adapun rules yang akan dibuat adalah seperti berikut ini.
  1. Pada hari dan jam kerja (senin-jum'at - 08:00-16:00) Traffic HTTP dari clients (192.168.0.0/16) akan di-redirect ke external proxy (172.16.16.106:3128). Sedangkan diluar hari dan jam kerja tersebut traffic HTTP tidak akan di-redirect (langsung melewati router gateway seperti traffic HTTPS).
  2. Pada hari dan jam kerja (senin-jum'at - 08:00-16:00) akses ke Facebook dan Youtube akan diblokir. Diluar hari dan jam kerja tersebut akses ke kedua situs tersebut tidak diblokir.
  3. Traffic antara DMZ, Clients dan Backbone tidak akan dilimit oleh router gateway. Ini berguna jika anda hendak membatasi / melimit bandwith Proxy Server ke Internet, maka agar traffic internal antara DMZ, Clients dan Backbone tidak terganggu / terlimit, maka anda harus menempatkan di simple queue (karena yang kita gunakan adalah simple queue) diurutan teratas traffic internal ke 3 area tersebut unlimited (maksimum bandwith lokal), baru dibawahnya baris konfigurasi simple queue yang melimit bandwith Poxy Server. Kita bisa saja menggunakan cara lain untuk melimit bandwith Proxy Server ke Internet dan meng-Unlimit bandwith proxy Server ke Jaringan Lokal yaitu dengan cara menandai paket hit mikrotik agar unlimited dan selain paket hit akan dilimit. Namun saat ini kita tidak akan menggunakan cara ini.
  4. Rule ini berlaku mulai tanggal 10 April 2015.
Untuk merealisasikan rule-rule diatas, maka ikuti langkah-langkah berikut ini.

Rule nomor 1

Tambahkan konfigurasi di Firewall NAT untuk me-redirect traffic http client ke proxy server.

[adminUTIK@GW1] > ip firewall nat add chain=dstnat action=dst-nat to-addresses=172.16.16.106 to-ports=3128 protocol=tcp src-address=192.168.0.0/16 dst-port=80 comment=redirect-to-proxy

Tambahkan konfigurasi di system scheduler untuk meng-enable rule diatas setiap hari (interval = 1 day) mulai jam 08:00 dan men-disable nya setiap hari (interval = 1 day) mulai pukul 16:01.

[adminUTIK@GW1] > system scheduler add name=enable-dstnat-toproxy start-date=may/04/2015 start-time=08:00:00 interval=1d on-event="/ip firewall nat enable [find comment=redirect-to-proxy]" comment=enable-redirect-80-clients-to-proxy
[adminUTIK@GW1] > system scheduler add name=disable-dstnat-toproxy start-date=may/04/2015 start-time=16:01:00 interval=1d on-event="/ip firewall nat disable [find comment=redirect-to-proxy]" comment=disable-redirect-80-clients-to-proxy

Kemudian masih pada system scheduler, tambahkan baris konfigurasi untuk men-disable rule firewall nat tersebut setiap hari sabtu dan meng-enable nya kembali setiap hari senin.

[adminUTIK@GW1] > system scheduler add name=disable-dstnat-toproxy-every-saturday start-date=may/02/2015 start-time=08:01:00 interval=1w on-event="/ip firewall nat disable [find comment=redirect-to-proxy]" comment=disable-redirect-80-clients-to-proxy-every-saturday
[adminUTIK@GW1] > system scheduler add name=enable-dstnat-toproxy-every-monday start-date=may/04/2015 start-time=08:00:00 interval=1w on-event="/ip firewall nat enable [find comment=redirect-to-proxy]" comment=enable-redirect-80-clients-to-proxy-every-monday

Pada rule dengan name=disable-dstnat-toproxy-every-saturday, pastikan start-date nya adalah hari sabtu. Dan pada rule dengan name=enable-dstnat-toproxy-every-monday, pastikan start-date nya adalah hari senin.

Rule nomor 2

Tambahkan baris konfigurasi di firewall layer 7 protocol dan firewall filter untuk memblokir akses ke facebook dan youtube.

[adminUTIK@GW1] > ip firewall layer7-protocol add name=facebook7 regexp="^.+(facebook.com).*\$" 
[adminUTIK@GW1] > ip firewall layer7-protocol add name=youtube7 regexp="^.+(youtube.com).*\$"
[adminUTIK@GW1] > ip firewall filter add action=drop protocol=tcp layer7-protocol=facebook7 dst-port=80,443 comment=l7-sites-block 
[adminUTIK@GW1] > ip firewall filter add action=drop protocol=tcp layer7-protocol=youtube7 dst-port=80,443 comment=l7-sites-block

Tambahkan baris konfigurasi di system scheduler agar rule firewall filter diatas bisa disabled dan enabled secara otomatis pada hari dan jam kerja yang telah ditentukan di rule nomor 2.

[adminUTIK@GW1] > system scheduler add name=disable-l7-sites start-date=apr/22/2015 start-time=08:00:00 interval=1d on-event="/ip firewall enable [find comment=l7-sites-block]" comment=disable-sites-l7-regexp-everyday
[adminUTIK@GW1] > system scheduler add name=enable-l7-sites start-date=apr/22/2015 start-time=16:00:00 interval=1d on-event="/ip firewall disable [find comment=l7-sites-block]" comment=enable-sites-l7-regexp-everyday 
[adminUTIK@GW1] >> system scheduler add name=disable-l7-sites-monday start-date=apr/20/2015 start-time=08:00:00 interval=7d on-event="/ip firewall filter enable [find comment=l7-sites-block]" comment=enable-sites-l7-regexp-every-saturday
[adminUTIK@GW1] >> system scheduler add name=enable-l7-sites-saturday start-date=apr/18/2015 start-time=06:00:00 interval=7d on-event="/ip firewall filter disable [find comment=l7-sites-block]" comment=disable-sites-l7-regexp-everyday-monday

Sampai disini rule firewall filter telah selesai. Namun, pemblokiran terhadap situs facebook dan youtube ini akan menyebabkan akses ke googledrive dan layanan lain yang terkait dengan layanan https google akan terganggu, termasuk situs-situs yang menggunakan https lainnya seperti garuda-indonesia.com dan lain-lain. Anda akan mengalami kendala saat akan mengakses google drive, melakukan print out tiket dari https://garuda-indonesia.com, dan situs-situs https lainnya yang memiliki layanan serupa.
Oleh karena itu, untuk mencegah masalah ini maka situs-situs https dari google, garuda-indonesia.com, go.id akan saya tempatkan diurutan lebih atas di firewall filter dengan action=accept.

[adminUTIK@GW1] > ip firewall layer7-protocol add name=garuda-indonesia7 regexp="^.+(garuda-indonesia.com).*\$"
[adminUTIK@GW1] > ip firewall layer7-protocol add name=google7 regexp="^.+(^.+(google.com|google.co.id|google).*$).*\$"
[adminUTIK@GW1] > ip firewall layer7-protocol add name=go.id7 regexp="^.+(go.id).*\$"
[adminUTIK@GW1] > ip firewall filter add chain=forward action=accept protocol=tcp src-address=0.0.0.0/0 layer7-protocol=google7 dst-port=80,443 
[adminUTIK@GW1] > ip firewall filter add chain=forward action=accept protocol=tcp src-address=0.0.0.0/0 layer7-protocol=garuda-indonesia7 dst-port=80,443
[adminUTIK@GW1] > ip firewall filter add chain=forward action=accept protocol=tcp src-address=0.0.0.0/0 layer7-protocol=go.id7 dst-port=80,443 

[adminUTIK@GW1] > ip firewall filter print
Flags: X - disabled, I - invalid, D - dynamic 
 .
 .
 .

 6   ;;; l7-sites-block
     chain=forward action=drop protocol=tcp src-address=0.0.0.0/0 layer7-protocol=facebook7 dst-port=80,443 

 7   ;;; l7-sites-block
     chain=forward action=drop protocol=tcp src-address=0.0.0.0/0 layer7-protocol=youtube7 dst-port=80,443 

 8   chain=forward action=accept protocol=tcp src-address=0.0.0.0/0 layer7-protocol=garuda-indonesia7 dst-port=80,443 

 9   chain=forward action=accept protocol=tcp src-address=0.0.0.0/0 layer7-protocol=dmz-wanasl.lcl dst-port=80,443 

10   chain=forward action=accept protocol=tcp src-address=0.0.0.0/0 layer7-protocol=go.id7 dst-port=80,443 

11   chain=forward action=accept protocol=tcp src-address=0.0.0.0/0 layer7-protocol=google7 dst-port=80,443 

[adminUTIK@GW1] > ip firewall filter move 11 6
[adminUTIK@GW1] > ip firewall filter move 11 6
[adminUTIK@GW1] > ip firewall filter move 11 6
[adminUTIK@GW1] > ip firewall filter move 11 6

[adminUTIK@GW1] > ip firewall filter print    
Flags: X - disabled, I - invalid, D - dynamic 
 .
 .
 .

 6   chain=forward action=accept protocol=tcp src-address=0.0.0.0/0 layer7-protocol=garuda-indonesia7 dst-port=80,443 

 7   chain=forward action=accept protocol=tcp src-address=0.0.0.0/0 layer7-protocol=dmz-wanasl.lcl dst-port=80,443 

 8   chain=forward action=accept protocol=tcp src-address=0.0.0.0/0 layer7-protocol=go.id7 dst-port=80,443 

 9   chain=forward action=accept protocol=tcp src-address=0.0.0.0/0 layer7-protocol=google7 dst-port=80,443 

10   ;;; l7-sites-block
     chain=forward action=drop protocol=tcp src-address=0.0.0.0/0 layer7-protocol=facebook7 dst-port=80,443 

11   ;;; l7-sites-block
     chain=forward action=drop protocol=tcp src-address=0.0.0.0/0 layer7-protocol=youtube7 dst-port=80,443 

Rule nomor 3

Kita akan menggunakan Simple Queue untuk melimit bandwith proxy server ke internet dan meng-unlimit bandwith untuk traffic jaringan internal. Tambahkan baris di queue simple sehingga memiliki urutan seperti berikut ini.

[adminUTIK@GW1] > queu simple print
Flags: X - disabled, I - invalid, D - dynamic 
 .
 .

 2    name="queue4" target-addresses=192.168.0.0/16 dst-address=172.16.16.0/24 interface=all parent=none packet-marks="" direction=both priority=8 
      queue=default-small/default-small limit-at=1G/1G max-limit=1G/1G burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s 
      total-queue=default-small 

 3    name="queue5" target-addresses=192.168.0.0/16 dst-address=192.168.0.0/16 interface=all parent=none packet-marks="" direction=both priority=8 
      queue=default-small/default-small limit-at=1G/1G max-limit=1G/1G burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s 
      total-queue=default-small 

 4    name="queue6" target-addresses=172.16.16.0/24 dst-address=192.168.0.0/16 interface=all parent=none packet-marks="" direction=both priority=8 
      queue=default-small/default-small limit-at=1G/1G max-limit=1G/1G burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s 
      total-queue=default-small 

 5    name="queue7" target-addresses=172.16.16.0/24 dst-address=10.0.0.0/24 interface=all parent=none packet-marks="" direction=both priority=8 
      queue=default-small/default-small limit-at=1G/1G max-limit=1G/1G burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s 
      total-queue=default-small 

 6    name="queue8" target-addresses=10.0.0.0/24 dst-address=192.168.0.0/16 interface=all parent=none packet-marks="" direction=both priority=8 
      queue=default-small/default-small limit-at=1G/1G max-limit=1G/1G burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s 
      total-queue=default-small 

 7    name="queue9" target-addresses=10.0.0.0/24 dst-address=172.16.16.0/24 interface=all parent=none packet-marks="" direction=both priority=8 
      queue=default-small/default-small limit-at=1G/1G max-limit=1G/1G burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s 
      total-queue=default-small 

 8    name="queue10" target-addresses=172.16.16.106/32 interface=all parent=none packet-marks="" direction=both priority=8 
      queue=default-small/default-small limit-at=512k/2384k max-limit=512k/2384k burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s 
      total-queue=default-small 

Sampai disini seluruh konfigurasi telah selesai. Lalu bagaimana melakukan filtering terhadap aktivitas user di jalur http ? Dan bagaimana pengaturan bandwith nya ?. Hal tersebut dapat kita lakukan di sisi proxy server. Anda dapat melihat cara konfigurasi squid proxy sebagai bandwith limiter melalui tutorial saya sebelumnya, namun agar mempermudah, isi file konfigurasi "/etc/squid/squid.conf" milik saya yang digunakan sebagai web filtering dan bandwith limiter adalah sebagai berikut.

root@proxy:/home/it# cat /etc/squid/squid.conf
http_port 3128 transparent
icp_port 0
cache_dir aufs /cache-squid2.7 80000 187 256

cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log

cache_effective_user proxy
cache_effective_group proxy
cache_mgr admin@domainasal.lcl

cache_mem 512 MB
maximum_object_size 102 MB
maximum_object_size_in_memory 32 KB
memory_replacement_policy heap GDSF
cache_replacement_policy heap LFUDA
cache_swap_low 98
cache_swap_high 99

visible_hostname proxy.domainasal.lcl
unique_hostname proxy@domainasal.lcl
dns_nameservers 172.16.16.100 8.8.8.8

acl all src 0.0.0.0/0.0.0.0
acl ip_dmz src 172.16.16.0/24
acl ip_it src 192.168.100.16/32
acl ip_clients src 192.168.0.0/16
acl ip_sakti src 192.168.100.239/32
acl ip_temp-unlimit src 192.168.100.185/32

#acl domain-unlimited dstdomain "/etc/squid/dst-domain-unlimited.txt"
acl unlimitdomain dstdomain .go.id 
acl unlimitdomain2 dstdomain .google.com .google.co.id
acl unlimitdomain3 dstdomain .usgs.gov
acl WORKTIME time MTWHF 08:00-16:00

delay_pools 2

delay_class 1 3
delay_parameters 1 -1/-1 -1/-1 -1/-1
delay_access 1 allow ip_it
delay_access 1 allow ip_dmz
delay_access 1 allow ip_clients unlimitdomain
delay_access 1 allow ip_clients unlimitdomain2

delay_access 1 allow ip_sakti
delay_access 1 allow ip_dmz unlimitdomain
delay_access 1 allow ip_dmz unlimitdomain2
delay_access 1 allow unlimitdomain3
delay_access 1 allow ip_temp-unlimit
delay_access 1 deny all

delay_class 2 3
delay_parameters 2 32000/32000 16000/16000 16000/100000
delay_access 2 allow ip_clients WORKTIME
delay_access 2 deny all

http_access allow all

Demikian tutorial kali ini. Jika ada yang kurang atau salah semoga mau mengingatkan dan menambahkan melalui kolom komentar. Thanks.






JANGAN LUPA DI-SUBSCRIBE CHANNEL YOUTUBE-NYA YA KAWAN !