Friday, 23 October 2020

Kombinasi Loadbalancing PCC dan Failover 2 ISP

 

Topologi Loadbalancing PCC dan Failover 2 ISP
Topologi Loadbalancing PCC dan Failover 2 ISP

Topologi

Astinet = 150mbps = ether1 = 192.168.200.1

Astinet = 50mbps = ether2 = 192.168.100.1

Topologi Loadbalancing PCC dan Failover 2 ISP
Topologi Loadbalancing PCC dan Failover 2 ISP
/ip firewall address-list
add address=10.0.0.0/8 list=private-lokal
add address=172.16.0.0/12 list=private-lokal
add address=192.168.0.0/16 list=private-lokal
 
/ip route
add check-gateway=ping comment=exit-1 distance=1 gateway=192.168.200.1 routing-mark=exit-1
add check-gateway=ping comment=exit-2 distance=1 gateway=192.168.100.1 routing-mark=exit-2
add check-gateway=ping comment=jalur-1 distance=1 gateway=192.168.200.1 routing-mark=jalur-1
add check-gateway=ping comment=jalur-1 distance=2 gateway=192.168.100.1 routing-mark=jalur-1
add check-gateway=ping comment=jalur-2 distance=1 gateway=192.168.100.1 routing-mark=jalur-2
add check-gateway=ping comment=jalur-2 distance=2 gateway=192.168.200.1 routing-mark=jalur-2
add check-gateway=ping comment=jalur-1 distance=1 gateway=192.168.200.1
add check-gateway=ping comment=jalur-2 distance=2 gateway=192.168.100.1
 
 
/ip firewall mangle
add action=accept chain=prerouting dst-address-list=private-lokal src-address-list=private-lokal
add action=accept chain=forward dst-address-list=private-lokal src-address-list=private-lokal
 
add action=mark-connection chain=input comment=exit-1 in-interface=ether1 new-connection-mark=exit-1 passthrough=yes
add action=mark-connection chain=input comment=exit-2 in-interface=ether2 new-connection-mark=exit-2 passthrough=yes
add action=mark-routing chain=output comment=exit-1 connection-mark=exit-1 new-routing-mark=exit-1 passthrough=no
add action=mark-routing chain=output comment=exit-2 connection-mark=exit-2 new-routing-mark=exit-2 passthrough=no
 
#LB PCC
add action=mark-routing chain=prerouting comment=jalur-1 dst-address-list=!private-lokal dst-address-type=!local new-routing-mark=jalur-1 passthrough=no per-connection-classifier=dst-address-and-port:4/0 src-address-list=private-lokal
 
add action=mark-routing chain=prerouting comment=jalur-2 dst-address-list=!private-lokal dst-address-type=!local new-routing-mark=jalur-2 passthrough=no per-connection-classifier=dst-address-and-port:4/1 src-address-list=private-lokal
 
add action=mark-routing chain=prerouting comment=jalur-2 dst-address-list=!private-lokal dst-address-type=!local new-routing-mark=jalur-2 passthrough=no per-connection-classifier=dst-address-and-port:4/2 src-address-list=private-lokal
 
add action=mark-routing chain=prerouting comment=jalur-2 dst-address-list=!private-lokal dst-address-type=!local new-routing-mark=jalur-2 passthrough=no per-connection-classifier=dst-address-and-port:4/3 src-address-list=private-lokal

Buat System Schedule dengan interval 10 detik dan pastekan script dibawah ini di On Event

#jalur-1 cek
:if ([/ping address=8.8.8.8 interface=ether1 routing=exit-1 count=5] = 0) do={/ip route set [find comment=jalur-1 gateway=192.168.200.1 distance=1] distance=3} else={/ip route set [find comment=jalur-1 gateway=192.168.200.1 distance=3] distance=1};
 
#jalur-2 cek
:if ([/ping address=8.8.8.8 interface=ether2 routing=exit-2 count=5] = 0) do={/ip route set [find comment=jalur-2 gateway=192.168.100.1 distance=1] distance=3} else={/ip route set [find comment=jalur-2 gateway=192.168.100.1 distance=3] distance=1};
 
Source : https://labkom.co.id/mikrotik/kombinasi-loadbalancing-pcc-dan-failover-2-isp 

Load Balancing Untuk Warnet Games Online

 

Anda mempunyai warnet games online, di warnet anda mempunyai aktifitas pelanggannya adalah browsing dan games online. Jika pelanggan anda ada yang browsing atau download, pelanggan yang bermain games online terganggu (LAG). Mungkin anda punya rencana memakai 2 ISP dengan tujuan 2 aktifitas itu dibagi koneksinya, 1 untuk browsing 1 lagi untuk games online.

Kondisi Jaringan

  • ISP pertama mempunyai IP 10.10.10.2/30 gateway 10.10.10.1 pada ether1 (untuk koneksi IIX)
  • ISP kedua mempunyai IP 20.20.20.2/30 gateway 20.20.20.1 pada ether2 (untuk koneksi internasional)
  • Jaringan lokal mempunyai IP 192.168.0.0/24 pada ether3

Langkah

Sebelumnya anda harus mempelajari tutorial Cara Memisahkan Bandwidth Internasional IX dan Lokal IIX di Mikrotik karena saya kembangkan dari tutorial tersebut.

Saya anggap anda sudah membuat paket mark internasional dan IIX dalam ip firewall mangle.

/ip address
add address=10.10.10.2/30 interface=ether1 comment=ISP 1 for IIX disabled=no
add address=20.20.20.2/30 interface=ether2 comment=ISP 2 for Internasional disabled=no
add address=192.168.0.1/24 interface=ether3 disabled=no
/ip firewall mangle
add chain=prerouting src-address=192.168.0.0/24 dst-address=nice action=mark-routing new-routing-mark=iix disabled=no comment=Routing Mark for IIX
/ip route
add gateway=20.20.20.1
add gateway=10.10.10.1 routing-mark=iix
/ip firewall nat
add chain=srcnat action=masquerade disabled=no

Penjelasan

/ip firewall mangle
add chain=prerouting src-address=192.168.0.0/24 dst-address-list=nice action=mark-routing new-routing-mark=iix disabled=no comment=Routing Mark for IIX

Rules diatas adalah membuat mark routing dengan nama “iix” untuk koneksi iix, bagaimana tau itu buat iix? saya menggunakan dst-address-list=nice (paket dari client yang menuju ip yang terdaftar pada address-list “nice”), bagaimana nice itu bisa ada? pelajari tutorial Memisahkan Bandwidth Internasional dan IIX disitu ada caranya.

/ip route
 add gateway=20.20.20.1
 add gateway=10.10.10.1 routing-mark=iix

Kita menggunakan primary gateway 20.20.20.1 yang difungsikan untuk koneksi internasional. Untuk koneksi IIX menggunakan 10.10.10.1 dengan routing-mark=iix yang sudah kita buat di ip firewall mangle. Loh kok internasional ga dibuat routing mark juga? karena kita hanya perlu mark routing untuk iix saja, jika ada paket yang tidak diproses oleh routing-mark “iix” maka otomatis melewati primary gateway dan itu bisa dibilang koneksi internasional Karena untuk paket IIX diproses oleh mangle dan rules routing kedua (routing-mark “iix”)

/ip firewall nat
add chain=srcnat action=masquerade disabled=no

Untuk NAT kita buat “masquerade” agar proses Network Address Translation (nat) bekerja otomatis pada kedua gateway tersebut. 

 

Source : https://labkom.co.id/mikrotik/load-balancing-untuk-warnet-games-online

Membuat GPS Tracer di Mikrotik

 

Tulisan ini sebagai bahan referensi saja bagi kalian yang akan membuat GPS Tracer yang terpasang di Mikrotik, dimana titik koordinat akan di post ke database apabila titik koordinat ditemukan atau berpindah lalu hasil koordinat tersebut ditampilkan dalam sebuah marker peta.

Data titik koordinat diambil dari Mikrotik yang dipasang script untuk perintah post ke mikrotikgps.php, kemudian dari mikrotikgps.php berfungsi untuk menyimpan koordinat ke database. Data koordinat di database akan ditampilkan dalam format xml yang di generate oleh mikrotik_genxml.php.

Kemudian akan ditampilkan marker pada peta lokasi Mikrotik oleh mikrotiklocation.html yang data koordinatnya diambil dari hasil generate mikrotik_genxml.php.

Daftar Isi

Langkah

Langkahnya kita install dulu webserver localhost misalnya xampp lalu buat database untuk menyimpan data koordinat.

Database

Buat sebuah database dengan nama gps

CREATE TABLE `tbl_gps` (
  `identity` varchar(20) NOT NULL,
  `mac` varchar(20) NOT NULL,
  `latitude` varchar(30) NOT NULL,
  `longitude` varchar(30) NOT NULL,
  `lat` varchar(30) NOT NULL,
  `lng` varchar(30) NOT NULL,
  `date` date NOT NULL,
  `dbm` varchar(30) NOT NULL,
  `technology` varchar(11) NOT NULL,
  `speed` varchar(11) NOT NULL,
  `altitude` varchar50) NOT NULL,
  `satellites` varchar(11) NOT NULL
)

Script untuk Post ke mikrotikgps.php

Buat sebuah scheduler untuk menjalankan script secara berkala/interval

:local server "IP MIKROTIK";

# Get GPS info and find variables
:system gps monitor file="gps.txt";
:global gpstext [/file get gps.txt contents];
:local datestart [:find $gpstext "time: "];
:local dateend [:find $gpstext "latitude"];
:local date [:pick $gpstext ($datestart +6) ($dateend -14)]
:local longstart [:find $gpstext "longitude" -1];
:local longend [:find $gpstext "\n" $longstart];
:local latstart [:find $gpstext "latitude" -1];
:local latend [:find $gpstext "\n" $latstart];
:local validstart [:find $gpstext "valid" -1];
:local validend [:find $gpstext "\n" $validstart];
:local speedstart [:find $gpstext "speed"];
:local speedend [:find $gpstext "." $speedstart];
:local speed [;pick $gpstext ($speedstart +7) ($speedend +3)];
:local altitudestart [:find $gpstext "altitude"];
:local altitudeend [:find $gpstext "." $altitudestart];
:local altitude [;pick $gpstext ($altitudestart +10) ($altitudeend +3)];
:local satellitesstart [:find $gpstext "satellites"];
:local satellitesend [:find $gpstext "\n" $satellitesstart];
:local satellites [;pick $gpstext ($satellitesstart +12) ($satellitesend)];
:local valid false;
:local zeros "";

# Get Ethernet details and set mac variable
:interface ethernet print detail from=ether1 file=eth1details.txt
:global eth1details [/file get "eth1details.txt" contents];
:local macstart [:find $eth1details "orig"];
:local mac [:pick $eth1details ($macstart +17) ($macstart +34)];

# Get identity variable
:local identity [:system identity get value-name=name];

# Get LTE1 info, set signal and technology variables
:interface lte info lte1 file="lte1info.txt"
:local lte1info [:file get lte1info.txt contents];
:local sigstart [:find $lte1info "signal"];
:local sigend [:find $lte1info "dBm" $sigstart];
:local signal [:pick $lte1info ($sigstart +16) ($sigend -1)];
:local techstart [:find $lte1info "access"];
:local techend [:find $lte1info "\n" $techstart];
:local techno [:pick $lte1info ($techstart +19) ($techend)];

:local technology;
:if ($techno ="GSM compact") do={[:set technology "GSM";]}
:if ($techno ="3G") do={:set technology "UMTS";}
:if ($techno ="Evolved 3G (LTE)") do={[:set technology "LTE";]}

:if ([:find $gpstext "yes" $validstart] > 0) do={:set valid true;};

:global longitude [:pick $gpstext ($longstart + 11) $longend];
:local degreestart [:find $longitude " " -1];
:local minutestart [:find $longitude " " $degreestart];
:local secondstart [:find $longitude "'" $minutestart];

:local secondend;
:local secfract;

:if ([:len [:find $longitude "." 0]] < 1) do={
    :set secondend [:find $longitude "'" $secondstart];
    :set secfract "0";
} else={
    :set secondend [:find $longitude "." $secondstart];
    :set secfract [:pick $longitude ($secondend + 1) ($secondend + 2)];
};

:local longdegree;
:local longdegreelink;

:if ([:pick $longitude 0 1] = "W") do={
    :set longdegree "-";
    :set longdegreelink "W";
} else={
    :set longdegree "+";
    :set longdegreelink "E";
};

:set longdegree ($longdegree . [:pick $longitude 2 $minutestart]);
:set longdegreelink ($longdegreelink . [:pick $longitude 2 $minutestart]);
:local longmin [:pick $longitude ($minutestart + 1) $secondstart];
:local longsec [:pick $longitude ($secondstart + 2) $secondend];
:local longfract ((([:tonum $longmin] * 6000) + ([:tonum $longsec] * 100) + ([:tonum $secfract] * 10) ) / 36);

:while (([:len $zeros] + [:len $longfract]) < 4) do={
    :set zeros ($zeros . "0");
};

:global newlong ($longdegree . "." . $zeros . $longfract);
:global newlonglink ($longdegreelink . "." . $zeros . $longfract);

:global latitude [:pick $gpstext (latstart + 10) $latend];
:set degreestart [:find $latitude " " -1];
:set minutestart [:find $latitude " " $degreestart];
:set secondstart [:find $latitude "'" $minutestart];

:if ([:len [:find $latitude "." 0]] < 1) do={
    :set secondend [:find $latitude "'" $secondstart];
    :set secfract "0";
} else={
    :set secondend [:find $latitude "." $secondstart];
    :set secfract [:pick $latitude ($secondend + 1) ($secondend +2)];
};

:local latdegree;
:local latdegreelink;

:if ([:pick $latitude 0 1] = "N") do={
    :set latdegree "+";
    :set latdegreelink "N";
} else={
    :set latdegree "-";
    :set latdegreelink "S";
};

:set latdegree ($latdegree . [:pick $latitude 2 $minutestart]);
:set latdegreelink ($latdegreelink . [:pick $latitude 2 $minutestart]);
:local latmin [:pick $latitude ($minutestart + 1) $secondstart];
:local latsec [:pick $latitude ($secondstart + 2) $secondend];
:local latfract ((([:tonum $latmin] * 6000) + ([:tonum $latsec] * 100) +([:tonum $secfract] * 10)) / 36);

:set zeros "";

:while (([:len $zeros] + [:len $latfract]) < 4) do={
    :set zeros ($zeros . "0");
};

:global newlat ($latdegree . "." . $zeros . $latfract);
:global newlatlink ($latdegreelink . "." . $zeros . $latfract);

:global coordinates ($newlong . "," . $newlat);

# SEND TO SERVER IF THE COORDINATES HAVE CHANGED
:if (valid) do={
    :global oldpos;

    :if ($oldpos != $coordinates) do={
        {
        :local urlstring "http://$server/mikrotikgps.php\?identity=$identity&mac=$mac&latitude=$latitude&longitude=$longitude&lat=$newlat&lng=$newlong&date=$date&dbm=$signal&technology=$technology&speed=$speed&altitude=$altitude&satellites=$satellites";
        :local urlEncoded;
        :for i from=0 to=([:len $urlstring] - 1) do={ 
          :local char [:pick $urlstring $i]
          :if ($char = " ") do={
            :set $char "%20"
          }
          :if ($char = "-") do={
            :set $char "%2D"
          }
          :if ($char = "+") do={
            :set $char "%2B"
          }
          :set urlEncoded ($urlEncoded . $char)
        }
        :tool fetch url="$urlEncoded" mode=http dst-path=gps-to-url;
        }
        :set oldpos $coordinates;
        :global counter;
        :set counter 0;
     };
} else={
         :global counter;
         :set counter ($counter + 1);
         :log info "GPS not valid, count = $counter";
         :if ($counter = 12) do={
         :system routerboard usb power-reset duration=1;
         :set counter 0;
};

Script untuk Post informasi koordinat Mikrotik ke email

Script ini akan mengirimkan titik koordinat ke email apabila koordinat Mikrotik berubah

# CHANGE BELOW E-MAIL ADDRESS
:local email "myuser@mydomain.com";

:system gps monitor file="gps.txt";
:global gpstext [/file get gps.txt contents];
:local longstart [:find $gpstext "longitude" -1];
:local longend [:find $gpstext "\n" $longstart];
:local latstart [:find $gpstext "latitude" -1];
:local latend [:find $gpstext "\n" $latstart];
:local validstart [:find $gpstext "valid" -1];
:local validend [:find $gpstext "\n" $validstart];
:local valid false;
:local zeros "";

:if ([:find $gpstext "yes" $validstart] > 0) do={:set valid true;};

:global longitude [:pick $gpstext ($longstart + 11) $longend];
:local degreestart [:find $longitude " " -1];
:local minutestart [:find $longitude " " $degreestart];
:local secondstart [:find $longitude "'" $minutestart];

:local secondend;
:local secfract;

:if ([:len [:find $longitude "." 0]] < 1) do={
    :set secondend [:find $longitude "'" $secondstart];
    :set secfract "0";
} else={
    :set secondend [:find $longitude "." $secondstart];
    :set secfract [:pick $longitude ($secondend + 1) ($secondend + 2)];
};

:local longdegree;
:local longdegreelink;

:if ([:pick $longitude 0 1] = "W") do={
    :set longdegree "-";
    :set longdegreelink "W";
} else={
    :set longdegree "+";
    :set longdegreelink "E";
};

:set longdegree ($longdegree . [:pick $longitude 2 $minutestart]);
:set longdegreelink ($longdegreelink . [:pick $longitude 2 $minutestart]);
:local longmin [:pick $longitude ($minutestart + 1) $secondstart];
:local longsec [:pick $longitude ($secondstart + 2) $secondend];
:local longfract ((([:tonum $longmin] * 6000) + ([:tonum $longsec] * 100) + ([:tonum $secfract] * 10) ) / 36);

:while (([:len $zeros] + [:len $longfract]) < 4) do={
    :set zeros ($zeros . "0");
};

:global newlong ($longdegree . "." . $zeros . $longfract);
:global newlonglink ($longdegreelink . "." . $zeros . $longfract);

:global latitude [:pick $gpstext (latstart + 10) $latend];
:set degreestart [:find $latitude " " -1];
:set minutestart [:find $latitude " " $degreestart];
:set secondstart [:find $latitude "'" $minutestart];

:if ([:len [:find $latitude "." 0]] < 1) do={
    :set secondend [:find $latitude "'" $secondstart];
    :set secfract "0";
} else={
    :set secondend [:find $latitude "." $secondstart];
    :set secfract [:pick $latitude ($secondend + 1) ($secondend +2)];
};

:local latdegree;
:local latdegreelink;

:if ([:pick $latitude 0 1] = "N") do={
    :set latdegree "+";
    :set latdegreelink "N";
} else={
    :set latdegree "-";
    :set latdegreelink "S";
};

:set latdegree ($latdegree . [:pick $latitude 2 $minutestart]);
:set latdegreelink ($latdegreelink . [:pick $latitude 2 $minutestart]);
:local latmin [:pick $latitude ($minutestart + 1) $secondstart];
:local latsec [:pick $latitude ($secondstart + 2) $secondend];
:local latfract ((([:tonum $latmin] * 6000) + ([:tonum $latsec] * 100) +([:tonum $secfract] * 10)) / 36);

:set zeros "";

:while (([:len $zeros] + [:len $latfract]) < 4) do={
    :set zeros ($zeros . "0");
};

:global newlat ($latdegree . "." . $zeros . $latfract);
:global newlatlink ($latdegreelink . "." . $zeros . $latfract);

:global coordinates ($newlong . "," . $newlat);

:global linkout "http://maps.google.com?q=$newlatlink+$newlonglink";
:global SMlinkout "http://www.openstreetmap.org/?lat=$newlat&lon=$newlong&zoom=8&layers=M";

:global kmlout "

  
    My router
    My router's location
    
      $coordinates
    
  

";

:if (valid) do={
    :global oldpos;

    :if ($oldpos != $coordinates) do={
        /file set [/file find name=gps.kml] contents=$kmlout
        /tool e-mail
        send to=$email subject="Router move" body="Moved to $latitude $longitude\r\n$linkout\r\n$SMlinkout" file=gps.kml
        :set oldpos $coordinates;
     };
} else={
         /tool e-mail
         send to=$email subject="Router gps position invalid" body="Router gps position invalid"
};

Buat mikrotikgps.php

Mikrotikgps.php berfungsi untuk menyimpan ke database dari data yang dikirim oleh script Mikrotik. https://pastebin.com/jL47etPQ

Buat koneksi.php

Koneksi.php berfungsi untuk menghubungkan ke database gps https://pastebin.com/tkdDbXEv

Buat mikrotik_genxml.php

Mikrotik_genxml.php berfungsi untuk memparse/membuat data dengan format xml dari tabel tbl_gps https://pastebin.com/3F0pquJ7 . Seperti pada gambar dibawah ini:

Buat mikrotiklocation.html

File ini untuk menampilkan peta lokasi/marker posisi Mikrotik. https://pastebin.com/LWHCfNBN

Hasilnya

Hasilnya akan ditampilkan dalam sebuah marker/titik koordinat dalam peta seperti pada gambar dibawah ini:

Sumber :

https://wiki.mikrotik.com/wiki/Manual:GPS-tracking

https://github.com/timmay2/mikrotik-gps

 

Source : https://labkom.co.id/mikrotik/membuat-gps-tracer-di-mikrotik

Membuat Live Chat di Login Page Hotspot dengan tawk.to

 

Tawk.to merupakan aplikasi live chat yang bisa dipasangkan di login page hotspot atau captive portal, dengan menggunakan tawk.to kita bisa berkomunikasi dengan pengunjung untuk tanya jawab tentang layanan hotspot yang kita kelola.

Kelebihan live chat dengan menggunakan tawk.to yaitu kita bisa melihat statistic penggunaan aplikasi tawk.to dibandingkan dengan live chat dengan menggunakan intergram atau telegram, contohnya total pengunjung harian, total obrolan yang terlewat dan yang terjawab, juga akan menyimpan history chat di tawk.to. Dan yang terpenting aplikasi tawk.to ini GRATIS.

Selain itu aplikasi tawk.to juga bisa digunakan di desktop maupun di android dengan akses menggunakan email yang aktif maka live chat dengan menggunakan tawk.to bisa digunakan dimana saja dan kapan saja.

Cara Memasang Live Chat Tawk.to ke Login Page

Untuk memasang liva chat tawk.to ke login page Mikrotik caranya kita terlebih dahulu daftar di halaman https://dashboard.tawk.to/signup. Selanjutnya masukkan nama, password dan email anda yang aktif.

Selanjutnya kita diarahkan ke pengaturan awal seperti pada gambar dibawah ini, silahkan isi judul dan alamat login page hotspotnya.

Selesai, tinggal pasang kode ini di antara tag <body> </body>.

Sebagai contoh saya menambahkan script tawk.to di tag sebelum </body> kta bisa menggunakan text editor seperti notepad++.

Setelah selesai akan menampilkan halaman dashboard dari aplikasi tawk.to yang menampilkan statistic dari penggunaan aplikasi tawk.to ini.

Selanjutnya buka email yang telah didaftarkan ke tawk.to, kita diharuskan memverifikasi email yang telah didaftarkan ke tawk.to

Login Hotspot Mikrotik dengan Live Chat Tawk.to

Login page bisa di download disini:

Download Login Page Hotspot Mikrotik Thema Ramadhan

Dibawah ini tampilan Login Hotspot dengan Live Chat Tawk.to, yang perlu diperhatikan yaitu alamat url yang didaftarkan ke tawk.to harus sesuai dengan alamat url dari login hotspot Mikrotik.

Tampilan live chat admin tawk.to di desktop

Tampilan live chat admin tawk.to di aplikasi android.

Tambahkan Walled Garden di Mikrotik

Agar koneksi dari tawk.to selalu terhubung walaupun belum login ke hotspot kita harus menambahkan tawk.to ke ip hotspot walled-garden

/ip hotspot walled-garden
add dst-host=*.tawk.to
add dst-host=tawk.link

Nah itulah Langkah-langkah Cara Membuat Live Chat di Login Page Hotspot dengan tawk.to, jadi bisa menjadi alternative live chat di login hotspot Mikrotik selain menggunakan intergram atau telegram. Semoga bermanfaat

 

Source :  https://labkom.co.id/mikrotik/membuat-live-chat-di-login-page-hotspot-dengan-tawk-to

Cara Edit Login Page Hotspot Menampilkan Link Whatsapp Melayang

 

Login Page Hotspot merupakan halaman portal yang berfungsi untuk mengakses internet dengan autentifikasi Username dan Password. Login Page Hotspot atau Captive Portal biasanya menampilkan sebuah informasi mengenai paket layanan dan harga layanan internet, juga biasanya menampilkan informasi kontak nomer telepon atau whatsapp yang bisa di hubungi untuk memudahkan komunikasi atau untuk mendaftar layanan internet.

Kita bisa menampilkan link atau tombol untuk menghubungi admin di halaman login page. Agar lebih menarik kita bisa menambahkan tombol/link whatsapp yang melayang di login page hotspot.

Contoh login page yang saya gunakan pada tutorial kali ini yaitu login page hotspot5legend dari mikhmon, seperti pada gambar dibawah ini.

Untuk menampilkan tombol whatsapp melayang di sebelah kanan bawah caranya kita harus menambahkan sebuah script CSS dan HTML pada login.html atau bisa juga pada halaman yang lain seperti status.html.

Untuk mengedit file login.html, teman-teman bisa menggunakan notepad++ atau aplikasi editor html seperti dreamweaver. Tambahkan script berikut di paling bawah sebelum tag </body></html>

<a class='fixed-whatsapp' href='https://api.whatsapp.com/send?phone=6289603586107&amp;text=Haii admin Labkom.co.id,  ' rel='nofollow noopener' target='_blank' title='Whatsapp'>
<svg viewBox='0 0 24 24' width='34' height='34'>
<path fill='#ffffff' d='M16.75,13.96C17,14.09 17.16,14.16 17.21,14.26C17.27,14.37 17.25,14.87 17,15.44C16.8,16 15.76,16.54 15.3,16.56C14.84,16.58 14.83,16.92 12.34,15.83C9.85,14.74 8.35,12.08 8.23,11.91C8.11,11.74 7.27,10.53 7.31,9.3C7.36,8.08 8,7.5 8.26,7.26C8.5,7 8.77,6.97 8.94,7H9.41C9.56,7 9.77,6.94 9.96,7.45L10.65,9.32C10.71,9.45 10.75,9.6 10.66,9.76L10.39,10.17L10,10.59C9.88,10.71 9.74,10.84 9.88,11.09C10,11.35 10.5,12.18 11.2,12.87C12.11,13.75 12.91,14.04 13.15,14.17C13.39,14.31 13.54,14.29 13.69,14.13L14.5,13.19C14.69,12.94 14.85,13 15.08,13.08L16.75,13.96M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C10.03,22 8.2,21.43 6.65,20.45L2,22L3.55,17.35C2.57,15.8 2,13.97 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,13.72 4.54,15.31 5.46,16.61L4.5,19.5L7.39,18.54C8.69,19.46 10.28,20 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z'/>
</svg>
</a>

Cari kode </style> Kemudian tambahkan script CSS dibawah ini, sebelum kode </style>

<style type="text/css">
a, a:link, a:visited, a:active { color: #AAAAAA; text-decoration: none; font-size: 10px; } a:hover { border-bottom: 1px dotted #c1c1c1; color: #AAAAAA; } img {border: none;} td { font-size: 14px; color: #7A7A7A; } .fixed-whatsapp { position: fixed; bottom: 20px; right: 20px; width: 50px; height: 50px; line-height: 50px; z-index: 9999; text-align: center; } .fixed-whatsapp:before { content: ""; width: 50px; height: 50px; background-color: #00C853; position: absolute; border-radius: 100%; box-shadow: 0 1px 1.5px 0 rgba(0, 0, 0, .12), 0 1px 1px 0 rgba(0, 0, 0, .24); z-index: 1; top: 0; left: 0; } .fixed-whatsapp svg { vertical-align: middle; z-index: 2; position: relative; }

Download login page hotspot tombol whatspp melayang

Agar koneksi Whatsapp selalu terhubung walaupun belum login kita harus menambahkan pengecualian untuk koneksi Whatsapp dengan menambahkannya ke Walled Garden

/ip hotspot walled-garden
add dst-host=api.whatsapp.com dst-port=443
add dst-host=wa.me dst-port=443
add dst-host=*.whatsapp.net dst-port=80
add dst-host=*.whatsapp.com dst-port=443
add dst-host=*.whatsapp.com dst-port=80
add dst-host=*.whatsapp.net dst-port=443

Apabila koneksi whatsapp tidak bisa di bypassed anda bisa mencoba dengan menggunakan address list. Sesuaikan nama address list dari IP lokal milik anda.

/ip firewall raw
add action=add-dst-to-address-list address-list=WHATSAPP \
    address-list-timeout=none-static chain=prerouting comment=WA content=\
    .whatsapp dst-address-list=!private-lokal src-address-list=private-lokal
add action=add-dst-to-address-list address-list=WHATSAPP \
    address-list-timeout=none-static chain=prerouting comment=WA content=\
    whatsapp.net dst-address-list=!private-lokal src-address-list=private-lokal
/ip hotspot walled-garden ip
add action=accept disabled=no !dst-address dst-address-list=WHATSAPP \
    !dst-port !protocol !src-address !src-address-list

/ip firewall address-list
add address=10.0.0.0/8 list=private-lokal
add address=100.64.0.0/10 list=private-lokal
add address=127.0.0.0/8 list=private-lokal
add address=169.254.0.0/16 list=private-lokal
add address=172.16.0.0/12 list=private-lokal
add address=192.0.0.0/24 list=private-lokal
add address=192.0.2.0/24 list=private-lokal
add address=192.168.0.0/16 list=private-lokal
add address=198.18.0.0/15 list=private-lokal
add address=198.51.100.0/24 list=private-lokal
add address=203.0.113.0/24 list=private-lokal
add address=0.0.0.0/8 list=private-lokal
add address=224.0.0.0/3 list=private-lokal

Rule diatas hanya bisa berupa chat saja, jika ingin kirim gambar/video/video call bisa mencoba menambahkan rule dibawah ini

/ip firewall raw
add action=add-dst-to-address-list address-list=WHATSAPP \
    address-list-timeout=none-dynamic chain=prerouting dst-address-list=\
    !private-lokal dst-port=4244,5222,5223,5228,5242 protocol=tcp \
    src-address-list=private-lokal
add action=add-dst-to-address-list address-list=WHATSAPP \
    address-list-timeout=none-dynamic chain=prerouting dst-address-list=\
    !private-lokal dst-port=3478,45395 protocol=udp src-address-list=\
    private-lokal
 
Source : https://labkom.co.id/mikrotik/cara-edit-login-page-hotspot-menampilkan-link-whatsapp-melayang 

Filter Serangan Bruto Force pada PPTP Server

 

Apakah teman-teman pernah menemukan log pptp, ppp, error, authentication failed dengan username yang acak, nah sepertinya Mikrotik anda sedang dalam incaran hacker yang mencoba masuk (Serangan Bruto Force) melalui PPTP Server yang aktif. Apabila PPTP Server tidak digunakan, kita cukup menonaktifkan saja PPTP Servernya, tapi bagaimana apabila PPTP Server digunakan untuk pelanggan rumahan, yang menggunakan PPPoE Client sebagai aksesnya. Pada tutorial kali ini saya akan menjelaskan langkah-langkah dalam memfilter serangan bruto force pada server PPTP.

PPTP (Point to Point Tunnel Protocol)

Komunikasi PPTP menggunakan protokol TCP port 1723, dan menggunakan IP Protocol 47/GRE untuk enkapsulasi paket datanya. Untuk mencegah serangan Bruto Force pada server PPTP kita perlu rule baru untuk mendeteksi koneksi input dari port GRE dengan percobaan tiga kali gagal mengakses PPTP Server maka IP Address penyerang akan dimasukan ke Address List dan langsung di DROP.

Rule ini bekerja ketika ada koneksi ke PPTP Server / Port GRE yang gagal karena password atau username salah, apabila dalam 3 kali percobaan login gagal maka akan di DROP dengan timeout satu hari. Jadi dalam satu hari IP Address tersebut akan di blokir untuk akses ke PPTP Server

/ip firewall filter
add action=drop chain=input comment="DROP KONEKSI PPTP" protocol=gre \
    src-address-list=pptp_blacklist
add action=add-dst-to-address-list address-list=pptp_blacklist \
    address-list-timeout=1d chain=output content="bad username or password" \
    dst-address-list=pptp_blacklist_3 protocol=gre
add action=add-dst-to-address-list address-list=pptp_blacklist_3 \
    address-list-timeout=1m chain=output content="bad username or password" \
    dst-address-list=pptp_blacklist_2 protocol=gre
add action=add-dst-to-address-list address-list=pptp_blacklist_2 \
    address-list-timeout=1m chain=output content="bad username or password" \
    dst-address-list=pptp_blacklist_1 protocol=gre
add action=add-dst-to-address-list address-list=pptp_blacklist_1 \
    address-list-timeout=1m chain=output content="bad username or password" \
    protocol=gre

Dan pastikan urutan dari rule ini sudah benar seperti pada gambar dibawah ini

Agar serangan Bruto Force pada PPTP Server ini bisa di monitoring oleh Bot Telegram kita bisa menggunakan cara ini: Mencegah Serangan pada Mikrotik dan di Monitoring oleh Bot Telegram

Itulah langkah-langkah untuk memfilter serangan Bruto Force pada Server PPTP, semoga tutorial ini bermanfat. 

 

Source : https://labkom.co.id/mikrotik/filter-serangan-bruto-force-pada-pptp-server

Mencegah Serangan pada Mikrotik dan di Monitoring oleh Bot Telegram

 

Beberapa serangan pada jaringan Mikrotik sering kita temukan diantaranya, Brute Force, Ping Flood atau DDoS dan Port Scanning, serangan tersebut bisa kita atasi dengan menambahkan sebuah rule pada Mikrotik untuk mencegah para attacker/botnet menyerang kembali. Kemudian ketika ada serangan pada Mikrotik kita bisa mengetahuinya melalui notifikasi pada Bot Telegram. Caranya akan saja jelaskan pada tutorial kali ini. Sebelum membuat rule untuk memblokir serangan pada Mikrotik kita pahami dulu jenis-jenis serangan, diantaranya:

Baca juga:

Daftar Isi

Brute Force

Brute Force adalah serangan yang dilakukan untuk membobol password dengan cara mencoba setiap password secara acak dari kombinasi huruf, angka dan simbol, sampai akhirnya menemukan password yang tepat. Biasanya Brute Forces dilakukan oleh robot atau program, karena untuk mendapatkan kombinasi huruf, angka dan simbol bisa dengan cepat dibuat oleh program/algoritma tertentu.

Ping Flood atau DDoS

Ping Flood atau sering kita kenal dengan istilah DDoS adalah jenis serangan yang dilakukan dengan cara mengirimkan lalu lintas/paket/ping jaringan internet pada server, sistem, atau jaringan Mikrotik secara terus menerus dan dalam jumlah paket data yang besar. Umumnya serangan ini dilakukan menggunakan beberapa komputer host penyerang sampai dengan komputer target tidak bisa diakses atau bahkan sampai rusak.

Port Scanning

Port Scanning adalah aktivitas yang dilakukan untuk memeriksa status port TCP dan UDP pada sebuah server atau jaringan Mikrotik. Aplikasi yang sering ditemukan untuk melakukan Port Scanning, seperti netcat, unicornscan, nmap, dll. Jadi dengan melakukan Port Scanning peretas bisa mencari port yang terbuka lalu mencobanya dengan melalukan beberapa cara untuk masuk ke sistem.

Langkah-Langkah

Memblokir Serangan Brute Force

Brute Force SSH dan Telnet

Rule ini akan mendeteksi serangan pada port 22 (SSH) dan port 23 (Telnet), dimana apabila terjadi tiga kali percobaan serangan melalui port 22 dan port 23 maka IP Address dari sumber serangan akan dimasukan kedalamn address list kemudian IP tersebut akan di drop dengan log-prefix=BruteForcesSshTelnet yang nantinya log-prefix tersebut akan menjadi notifikasi pada Bot Telegram.

/ip firewall filter
add action=drop chain=input comment="drop SSH&TELNET Brute Forcers" dst-port=\
    22-23 log=yes log-prefix=BruteForcesSshTelnet protocol=tcp \
    src-address-list=IP_BlackList
add action=add-src-to-address-list address-list=IP_BlackList \
    address-list-timeout=1d chain=input connection-state=new dst-port=22-23 \
    protocol=tcp src-address-list=SSH_BlackList_3
add action=add-src-to-address-list address-list=SSH_BlackList_3 \
    address-list-timeout=1m chain=input connection-state=new dst-port=22-23 \
    protocol=tcp src-address-list=SSH_BlackList_2
add action=add-src-to-address-list address-list=SSH_BlackList_2 \
    address-list-timeout=1m chain=input connection-state=new dst-port=22-23 \
    protocol=tcp src-address-list=SSH_BlackList_1
add action=add-src-to-address-list address-list=SSH_BlackList_1 \
    address-list-timeout=1m chain=input connection-state=new dst-port=22-23 \
    protocol=tcp

Brute Force FTP

Rule ini akan mendeteksi serangan pada FTP dimana apabila terjadi serangan akan menambahkan sebuah log-prefix=BruteForcesFtp.

/ip firewall filter
add action=drop chain=input comment="drop FTP Brute Forcers" dst-port=21 log=\
    yes log-prefix=BruteForcesFtp protocol=tcp src-address-list=FTP_BlackList
add action=add-dst-to-address-list address-list=FTP_BlackList \
    address-list-timeout=1d chain=output content="530 Login incorrect" \
    protocol=tcp
add action=add-dst-to-address-list address-list=FTP_BlackList \
    address-list-timeout=1d chain=output content="530 Login incorrect" \
    protocol=tcp
add action=accept chain=output content="530 Login incorrect" dst-limit=\
    1/1m,9,dst-address/1m protocol=tcp

Brute Force Winbox

Rule ini akan mendeteksi apabila ada percobaan login ke Winbox port 8291 dengan tiga kali percobaan dalam waktu satu menit maka IP Sumber akan di blokir. Maka apabila menggunakan rule ini disarankan jangan login menggunakan tiga Winbox di komputer yang sama, apabila hal tersebut terjadi maka IP Address yang digunakan untuk login ke Winbox akan di blokir selama satu hari. Kemudian akan menambahkan sebuah log dengan nama log-prefix=BruteForcesWinbox apabila terjadi login 3 kali berturut-turut dengan IP Address yang sama.

/ip firewall filter
add action=drop chain=input comment="drop Winbox Brute Forces" dst-port=8291 \
    log=yes log-prefix=BruteForcesWinbox protocol=tcp src-address-list=\
    IP_BlackList_Winbox
add action=add-src-to-address-list address-list=IP_BlackList_Winbox \
    address-list-timeout=1d chain=input connection-state=new dst-port=8291 \
    protocol=tcp src-address-list=SSH_BlackList_Winbox_3
add action=add-src-to-address-list address-list=SSH_BlackList_Winbox_3 \
    address-list-timeout=1m chain=input connection-state=new dst-port=8291 \
    protocol=tcp src-address-list=SSH_BlackList_Winbox_2
add action=add-src-to-address-list address-list=SSH_BlackList_Winbox_2 \
    address-list-timeout=1m chain=input connection-state=new dst-port=8291 \
    protocol=tcp src-address-list=SSH_BlackList_Winbox_1
add action=add-src-to-address-list address-list=SSH_BlackList_Winbox_1 \
    address-list-timeout=1m chain=input connection-state=new dst-port=8291 \
    protocol=tcp

Memblokir Serangan Ping Flood / DDoS

Rule ini akan mendeteksi serangan Ping Flood / DDoS kemudian menambahkan sebuah log dengan nama log-prefix=DDoS.

/ip firewall filter
add action=jump chain=forward comment=ddos connection-state=new jump-target=\
    detect-ddos
add action=return chain=detect-ddos dst-limit=32,32,src-and-dst-addresses/10s
add chain=detect-ddos src-address=10.10.10.1 action=return
add action=add-dst-to-address-list address-list=ddosed address-list-timeout=\
    10m chain=detect-ddos
add action=add-src-to-address-list address-list=ddoser address-list-timeout=\
    10m chain=detect-ddos
add action=drop chain=forward connection-state=new dst-address-list=ddosed \
    log=yes log-prefix=DDoS src-address-list=ddoser

IP 10.10.10.1 adalah DNS Server untuk pengecualian yang tidak di blokir

Device yang melakukan transfer data melalui aplikasi SHAREit dalam satu jaringan WiFi ternyata terdeteksi juga oleh rule ini

sumber: wiki.mikrotik

Memblokir Serangan Port Scanner

Rule ini akan mendeteksi apabila terjadi serangan pada Mikrotik melalui aplikasi Port Scanner. Apabila terjadi serangan maka akan menambahkan sebuah log-prefix=PortScanner.

/ip firewall filter
add action=drop chain=input comment="drop port scanners" log=yes log-prefix=\
    PortScanner src-address-list=port_scanners
add action=add-src-to-address-list address-list=port_scanners \
    address-list-timeout=2w chain=input protocol=tcp tcp-flags=\
    fin,!syn,!rst,!psh,!ack,!urg
add action=add-src-to-address-list address-list=port_scanners \
    address-list-timeout=2w chain=input protocol=tcp tcp-flags=fin,syn
add action=add-src-to-address-list address-list=port_scanners \
    address-list-timeout=2w chain=input protocol=tcp tcp-flags=syn,rst
add action=add-src-to-address-list address-list=port_scanners \
    address-list-timeout=2w chain=input protocol=tcp tcp-flags=\
    fin,psh,urg,!syn,!rst,!ack
add action=add-src-to-address-list address-list=port_scanners \
    address-list-timeout=2w chain=input protocol=tcp tcp-flags=\
    fin,syn,rst,psh,ack,urg
add action=add-src-to-address-list address-list=port_scanners \
    address-list-timeout=2w chain=input protocol=tcp tcp-flags=\
    !fin,!syn,!rst,!psh,!ack,!urg

Notifikasi ke Bot Telegram Apabila ada Serangan

Karena kita telah menambahkan sebuah log-prefix untuk setiap jenis rule untuk blokir serangan maka dengan menggunakan script kita akan membaca log tersebut sesuai dengan log-prefix yang telah di tentukan sebelumnya. Script ini akan membaca setiap log-prefix yang sesuai lalu akan mengirimkan log tersebut ke Bot Telegram.

Caranya buat sebuah system scheduler lalu buat schedule dengan nama LogMikrotik, lalu tambahkan script dibawah ini di On Event. Lalu jangan lupa ubah terlebih dahulu BOT ID dan Chat ID. Jalankan dengan interval yang di inginkan, asalkan tidak terlalu cepat karena script ini cukup memakan resources CPU..hehe

Share to Unlock Content

Silahkan share untuk membuka link download dan membuka scriptnya

Apabila tutorial ini bermanfaat support saya dengan cara share artikel ini.. Terimakasih 

Buat Logging

Agar Log dari Firewall dapat masuk ke Log Mikrotik, kita harus menambahkan sebuah Log Action dan Log Rule baru dengan Action Firewall. Dengan cara ke menu System –> Logging. Kira-kira buat seperti pada gambar dibawah ini:

Hasilnya

Ketika saya akan mencobanya dengan mengaktifkan port SSH dan Telnet di Mikrotik ternyata Mikrotik saya sudah menjadi target serangan Telnet.,,hehehe

Notifikasi Login Winbox Gagal Login

Notifikasi ketika ada serangan/akses ke FTP Mikrotik.

Untuk DDoS dan Port Scanner belum saya coba, silahkan apabila kalian ingin mencobanya sendiri, mohon maaf apabila ada rule yang keliru karena saya hanya ingin berbagi saja, apabila ada rule yang keliru bisa disampaikan saja di kolom komentar, semoga bermanfaat..hehe

 

Source :  https://labkom.co.id/mikrotik/mencegah-serangan-pada-mikrotik-dan-di-monitoring-oleh-bot-telegram