Thursday, July 11, 2013

Firewall Bertingkat. Pembatasan Akses Internet Bersadarkan IP dan Port

Akhirnya sempat juga nulis lagi di blog setelah sekian lama karena sibuk kerjaan :p

Saya ingin berbagi mengenai konfigurasi mikrotik untuk pembatasan Akses internet Berdasarkan IP dan Port yang digunakan. Konfigurasi ini saya gunakan karena banyaknya koneksi dari user yang tidak sewajarnya keluar dari interface-gateway seperti port2 yang digunakan virus / trojan / worm untuk berkomunikasi antara komputer clinet yang terinfeksi dengan server virus / trojan / worm itu sendiri. Sebelumnya saya sempat mengimplementasikan dengan menggunakan metode Blacklist artinya mendrop port2 yang sering digunakan untuk virus / trojan / worm. Setapi setelah dicoba dan di analisa ternyata metode ini saya rasa kurang cocok karena bisa saja varian virus / trojan / worm baru menggunakan port yang baru dan juga chain rule di mikrotik menjadi semakin banyak. Alhasil jadi meningkatkan resource mikrotik itu sendiri. Terakhir saya implementasi menggunakan Blacklist Port ada sekitar 500 rules yang dibuat. Akhirnya munculah ide untuk menggunakan metode Whitelist. Jadi saya hanya melewatkan Port2 yang saya daftarkan dan mendrop sisanya. Oke langsung aja ke TKP.

Dicontohkan Ip Lokal adalah 192.168.88.0/24 dan ip mikrotik dari arah client adalah 192.168.88.1.

SCRIPT
/ip firewall address-list
add address=192.168.88.2 disabled=no list=boleh-internet
add address=192.168.88.3 disabled=no list=boleh-internet
/ip firewall filter
add action=accept chain=input comment="Accept Input Established" connection-state=established disabled=no
add action=accept chain=input comment="Accept Input Related" connection-state=related disabled=no
add action=drop chain=input comment="Drop Input Invalid" connection-state=invalid disabled=no
add action=accept chain=input comment="Accept Input Limited ICMP" disabled=no limit=50/5s,2 protocol=icmp
add action=drop chain=input comment="Drop Input Exceed ICMP" disabled=no protocol=icmp
add action=accept chain=input comment="Accept Input Winbox" disabled=no dst-port=8291 protocol=tcp
add action=accept chain=input comment="Accept Input Webfig" disabled=no dst-port=80 protocol=tcp
add action=accept chain=input comment="Accept Input Telnet" disabled=no dst-port=23 protocol=tcp
add action=accept chain=input comment="Accept Input SSH" disabled=no dst-port=22 protocol=tcp
add action=accept chain=input comment="Accept Input DNS" disabled=no dst-port=53 protocol=udp
add action=accept chain=input comment="Accept Input WInbox Discovery" disabled=no dst-port=5678 protocol=udp
add action=drop chain=input comment="Drop Input Anything Else" disabled=no
add action=accept chain=forward comment="Accept Forward Established" connection-state=established disabled=no
add action=accept chain=forward comment="Accept Forward Related" connection-state=related disabled=no
add action=drop chain=forward comment="Drop Forward Invalid" connection-state=invalid disabled=no
add action=jump chain=forward comment="Accept User Internet and Jump to Port-Filter" disabled=no jump-target=port-filter src-address-list=boleh-internet
add action=accept chain=port-filter comment="Accept Port-Filter HTTP" disabled=no port=80 protocol=tcp
add action=accept chain=port-filter comment="Accept Port-Filter HTTPS" disabled=no port=443 protocol=tcp
add action=accept chain=port-filter comment="Accept Port-Filter Email Ports" disabled=no port=25,587,465,110,143,993,995 protocol=tcp
add action=accept chain=port-filter comment="Accept Port-Filter YM" disabled=no port=5050 protocol=tcp
add action=accept chain=port-filter comment="Accept Port-Filter VPN BCA" disabled=no port=500,10000 protocol=udp
add action=accept chain=port-filter comment="Accept Port-Filter DNS" disabled=no port=53 protocol=udp
add action=accept chain=port-filter comment="Accept Port-Filter NTP" disabled=no port=123 protocol=udp
add action=accept chain=port-filter comment="Accept Port-Filter ICMP" disabled=no protocol=icmp
add action=drop chain=port-filter comment="Drop Port-Filter Anything Else" disabled=no
add action=drop chain=forward comment="Drop Forward Anything Else" disabled=no

Penjelasannya :
CHAIN INPUT
/ip firewall address-list
add address=192.168.88.2 disabled=no list=boleh-internet
add address=192.168.88.3 disabled=no list=boleh-internet

Script diatas adalah untuk mendaftarkan IP user siapa saja yang bisa akses internet.

/ip firewall filter
add action=accept chain=input comment="Accept Input Established" connection-state=established disabled=no
add action=accept chain=input comment="Accept Input Related" connection-state=related disabled=no
add action=drop chain=input comment="Drop Input Invalid" connection-state=invalid disabled=no

Script diatas adalah default config bawaan mikrotik yang berfungsi untuk Menerima koneksi Established dan Related, dan Men-drop invalid connection yang menuju ke Mikrotik itu sendiri. Fungsi utamanya sih agar beban kinerja mikrotik bisa lebih ringan karena tidak perlu mengulang permintaan yang sebelumnya sudah terbentuk.

add action=accept chain=input comment="Accept Input Limited ICMP" disabled=no limit=50/5s,2 protocol=icmp

add action=drop chain=input comment="Drop Input Exceed ICMP" disabled=no protocol=icmp

Script diatas adalah untuk melimit ping yang menuju mikrotik dan mendrop yang melebihi batas ping. Menurut saya lebih ke arah Flood Ping yang berlebihan kepada Mikrotik.

add action=accept chain=input comment="Accept Input Winbox" disabled=no dst-port=8291 protocol=tcp
add action=accept chain=input comment="Accept Input Webfig" disabled=no dst-port=80 protocol=tcp
add action=accept chain=input comment="Accept Input Telnet" disabled=no dst-port=23 protocol=tcp
add action=accept chain=input comment="Accept Input SSH" disabled=no dst-port=22 protocol=tcp
add action=accept chain=input comment="Accept Input DNS" disabled=no dst-port=53 protocol=udp
add action=accept chain=input comment="Accept Input WInbox Discovery" disabled=no dst-port=5678 protocol=udp

Script diatas adalah untuk menerima port - port yang diijinkan masuk ke arah mikrotik itu sendiri.

add action=drop chain=input comment="Drop Input Anything Else" disabled=no

Script diatas adalah untuk mendrop paket yang masuk ke mikrotik apabila tidak ada yang sesuai dengan chain yang sudah dijelaskan diatasnya.


CHAIN FORWARD
add action=accept chain=forward comment="Accept Forward Established" connection-state=established disabled=no
add action=accept chain=forward comment="Accept Forward Related" connection-state=related disabled=no
add action=drop chain=forward comment="Drop Forward Invalid" connection-state=invalid disabled=no

Penjelasan Script diatas mungkin sama seperti sebelumnya hanya perbedaannya berlaku untuk koneksi yang melewati mikrotik.

add action=jump chain=forward comment="Accept User Internet and Jump to Port-Filter" disabled=no jump-target=port-filter src-address-list=boleh-internet

Script diatas adalah untuk memforward IP yang didaftarkan pada Address list boleh-internet (whitelist IP) dan di jump ke chain baru yaitu port-filter yang nantinya akan digunakan pada whitelist port yang bisa dilewati.

add action=accept chain=port-filter comment="Accept Port-Filter HTTP" disabled=no port=80 protocol=tcp
add action=accept chain=port-filter comment="Accept Port-Filter HTTPS" disabled=no port=443 protocol=tcp
add action=accept chain=port-filter comment="Accept Port-Filter Email Ports" disabled=no port=25,587,465,110,143,993,995 protocol=tcp
add action=accept chain=port-filter comment="Accept Port-Filter YM" disabled=no port=5050 protocol=tcp
add action=accept chain=port-filter comment="Accept Port-Filter VPN BCA" disabled=no port=500,10000 protocol=udp
add action=accept chain=port-filter comment="Accept Port-Filter DNS" disabled=no port=53 protocol=udp
add action=accept chain=port-filter comment="Accept Port-Filter NTP" disabled=no port=123 protocol=udp
add action=accept chain=port-filter comment="Accept Port-Filter ICMP" disabled=no protocol=icmp

Script diatas adalah untuk meneruskan port - port yang boleh melewati mikrotik yang berasal dari jump chain sebelumnya yaitu forward whitelist IP Address.

add action=drop chain=port-filter comment="Drop Port-Filter Anything Else" disabled=no

Script diatas adalah untuk mendrop paket yang melewati mikrotik apabila tidak ada yang sesuai dengan chain yang sudah dijelaskan diatasnya (chain port-filter).

add action=drop chain=forward comment="Drop Forward Anything Else" disabled=no

Script diatas adalah untuk mendrop semua paket yang melewati mikrotik.


Silahkan ditambahkan port - port yang diperlukan dan disesuaikan dengan keadaan di mikrotik anda. Untuk IP yang tidak didaftarkan pada address list maka tidak akan bisa terkoneksi ke internet.

Terima kasih kepada Mas Naufal Assegaf dan forummmikrotik.com atas masukan dan sarannya. Semoga sedikit tulisan ini bisa bermanfaat bagi kita semua. Amin.

Friday, June 10, 2011

Mari Incip2 DNS Unbound High Performance

berawal dari infonya azzzf

thx bro 

jadi penasaran dengan perfomancenya 
numpang ijin di tampilkan graphnya hehehe ..


This image has been resized. Click this bar to view the full image. The original image is sized 754x453.


tested on OS ubuntu ram 1Gb, (include servis squid, apache2, & mrtg squid)

lansung di geber :


Code:
apt-get install unbound
cd /etc/unbound
wget  ftp://FTP.INTERNIC.NET/domain/named.cache
unbound-control-setup
chown unbound:root unbound_*
chmod 440 unbound_*

dan sesuaikan config /etc/unbound/unbound.conf, dan servis dns lainnya (bind/dnsmasq dll) harus di stop agar tidak bentrok)

Code:
server:
         verbosity: 1
         statistics-interval: 120
         num-threads: 1
         interface: 0.0.0.0

         outgoing-range: 512
         num-queries-per-thread: 1024

         msg-cache-size: 16m
         rrset-cache-size: 32m 

         msg-cache-slabs: 4
         rrset-cache-slabs: 4

         cache-max-ttl: 86400
         infra-host-ttl: 60
         infra-lame-ttl: 120
         
         infra-cache-numhosts: 10000
         infra-cache-lame-size: 10k

         do-ip4: yes
         do-ip6: no
         do-udp: yes
         do-tcp: yes
         do-daemonize: yes

         #access-control: 0.0.0.0/0 allow
         access-control: 192.168.0.0/16 allow
         access-control: 172.16.0.0/12 allow
         access-control: 10.0.0.0/8 allow
         access-control: 127.0.0.0/8 allow
         access-control: 0.0.0.0/0 refuse
      
         chroot: "/etc/unbound"
         username: "unbound"
         directory: "/etc/unbound"
         #logfile: "/etc/unbound/unbound.log"
         #use-syslog: yes
         logfile: ""
         use-syslog: no
         pidfile: "/etc/unbound/unbound.pid"
         root-hints: "/etc/unbound/named.cache"
       
        identity: "DNS"
        version: "1.4"
        hide-identity: yes
        hide-version: yes
        harden-glue: yes
        do-not-query-address: 127.0.0.1/8
        do-not-query-localhost: yes
        module-config: "iterator"

        #zone localhost
        local-zone: "localhost." static 
        local-data: "localhost. 10800 IN NS localhost."
        local-data: "localhost. 10800 IN SOA localhost. nobody.invalid. 1 3600 1200 604800 10800" 
        local-data: "localhost. 10800 IN A 127.0.0.1" 

        local-zone: "127.in-addr.arpa." static 
        local-data: "127.in-addr.arpa. 10800 IN NS localhost." 
        local-data: "127.in-addr.arpa. 10800 IN SOA localhost. nobody.invalid. 2 3600 1200 604800 10800" 
        local-data: "1.0.0.127.in-addr.arpa. 10800 IN PTR localhost." 
       
        #zone warnet-sudiro.net
        local-zone: "warnet-sudiro.net." static
        local-data: "warnet-sudiro.net. 86400 IN NS ns1.warnet-sudiro.net."
        local-data: "warnet-sudiro.net. 86400 IN SOA warnet-sudiro.net. hostmaster.warnet-sudiro.net.  3 3600 1200 604800 86400"
        local-data: "warnet-sudiro.net. 86400 IN A 192.168.100.2"
        local-data: "www.warnet-sudiro.net. 86400 IN A 192.168.100.2"
        local-data: "ns1.warnet-sudiro.net. 86400 IN A 192.168.100.2"
      
        local-data: "mail.warnet-sudiro.net. 86400 IN A 192.168.100.5"
        local-data: "warnet-sudiro.net. 86400 IN MX 10 mail.warnet-sudiro.net."
        local-data: "warnet-sudiro.net. 86400 IN TXT v=spf1 a mx ~all"

       local-zone: "100.168.192.in-addr.arpa." static
       local-data: "100.168.192.in-addr.arpa. 10800 IN NS warnet-sudiro.net."
       local-data: "100.168.192.in-addr.arpa. 10800 IN SOA warnet-sudiro.net. hostmaster.warnet-sudiro.net. 4 3600 1200 604800 864000"
       local-data: "2.100.168.192.in-addr.arpa. 10800 IN PTR warnet-sudiro.net."

forward-zone: 
        name: "."
        forward-addr: 202.134.1.10
        forward-addr: 222.124.204.34
        forward-addr: 202.134.0.155

remote-control:
        control-enable: yes
        control-interface: 127.0.0.1
        control-port: 953
        server-key-file: "/etc/unbound/unbound_server.key"
        server-cert-file: "/etc/unbound/unbound_server.pem"
        control-key-file: "/etc/unbound/unbound_control.key"
        control-cert-file: "/etc/unbound/unbound_control.pem"
Sumber : http://www.forummikrotik.com/guide/14263-share-mari-incip2-dns-unbound-high-performance.html

Thursday, June 9, 2011


Mungkin terdengar agak aneh jika ada pembatasan penggunaan email hanya untuk domain lokal saja namun di Indonesia hal ini bukan sesuatu yang aneh. Banyak perusahaan memilih pendekatan pembatasan akses email keluar agar pekerjanya lebih berkonsentrasi pada pekerjaan :-D
Tips berikut bisa memaksa Zimbra membatasi user-user tertentu mengirimkan email hanya pada domain yang diizinkan. Misalnya, user vavai boleh mengirimkan email sesuka hati, sedangkan user zezevavai hanya boleh mengirim email untuk domain vavai.com saja. Domain yang dibatasi bisa lebih dari satu, misalnya user zezevavai selain boleh mengirim untuk domain vavai.com juga boleh mengirim untuk vavai.co.id dan infokreasindo.co.id. Fungsi terakhir ini bermanfaat bagi perusahaan yang memiliki sister company atau anak perusahaan atau group perusahaan.
So, bagaimana caranya ? Berikut adalah tipsnya :
1.         Buka konsole (ALT+F2, konsole)
2.        Masuk sebagai Zimbra User (su – zimbra)
3.        Edit file “/opt/zimbra/conf/postfix_recipient_restrictions.cf” dan tambahkan pada bagian atas file :
check_sender_access hash:/opt/zimbra/postfix/conf/restricted_senders
4.        Edit file “/opt/zimbra/conf/zmmta.cf” dan tambahkan baris berikut :
POSTCONF smtpd_restriction_classes local_only
POSTCONF local_only FILE postfix_check_recipient_access.cf
Baris tersebut ditambahkan diantara baris POSTCONF virtual_transport            LOCAL postfix_virtual_transport
5.        Buat file “/opt/zimbra/conf/postfix_check_recipient_access.cf” dan isikan baris :
check_recipient_access hash:/opt/zimbra/postfix/conf/local_domains, reject
6.        Buat file “/opt/zimbra/postfix/conf/restricted_senders” dan masukkan nama user yang akan dibatasi, dengan format sebagai berikut :
user@namadomain.com local_only
7.        Buat file “/opt/zimbra/postfix/conf/local_domains” dan masukkan nama domain yang diperbolehkan untuk user yang dibatasi dengan format sebagai berikut :
namadomain.com OK 
namadomainlain.com OK
8.        Jalankan perintah :
postmap /opt/zimbra/postfix/conf/restricted_senders
postmap /opt/zimbra/postfix/conf/local_domains 
zmmtactl stop 
zmmtactl start

Setelah setting diatas, semua user yang tercantum pada “/opt/zimbra/postfix/conf/restricted_senders” akan dibatasi pengiriman emailnya. Mereka hanya bisa mengirim email ke nama domain yang sudah ditentukan pada file “/opt/zimbra/postfix/conf/local_domains”, sedangkan yang lain boleh mengirim email tanpa pembatasan
Catatan :
1.         Setting tersebut akan hilang jika melakukan proses upgrade
2.        Jika ingin membatalkan setup diatas, lakukan hal berikut :
3.        Hapus baris yang ditambahkan pada file zmmta.cf dan pastikan agar setting pembatasan ditujukan ke alamat kosong dengan perintah postconf -e smtpd_restriction_classes=’ ‘ disusul perintah zmmtactl reload


Sumber : Vavai.com