Arief Yudhawarman

Masih belajar buat blog

Aplikasi Web Mikrotik CapsMan Controller

leave a comment »

Pada kesempatan yang lalu penulis telah membuat artikel Instalasi Access Point Manager Mikrotik (CAPsMAN). Jika instalasi telah berhasil dan mikrotik wireless yang dikonfigur sebagai CAP telah terintegrasi ke CAPsMAN maka untuk melihat radio CAP tersebut atau aktivitas client yang telah terhubung ke wireless kita harus login ke winbox CAPsMAN.

CAPsMAN Remote CAP

CAPsMAN Remote CAP


CAPsMAN Registration Table

CAPsMAN Registration Table



Informasi yang diberikan pada gambar di atas memang tidak begitu detail seperti tidak ada keterangan mengenai:

  • Nama client wireless atau hostname misalnya NB100, PC999, Iphone, dll.
  • Nama user yang memiliki device tersebut di atas
  • Alamat IP Address client wireless.
  • Menampilkan log koneksi client tertentu.
  • Mengukur kualitas koneksi dengan icmp atau ping (kalau koneksi wireless buruk icmp reply bisa ribuan milisecond).

Penulis sebelumnya pernah memakai access point Unifi dengan Aplikasi Web Unifi Access Point Controller. UAP Controller ini memberikan interface yang user friendly dan memudahkan operator untuk memantau atau mengontrol jaringan wireless seperti mengkonfigurasi AP (adopt AP, setup WLANs / Virtual AP, set frekuensi dan power radio), rekoneksi client wireless, block client, membuat fixed connection client ke AP tertentu, dll. Berdasarkan itu penulis mencoba membuat Aplikasi Web Mikrotik CapsMan Controller agar operator / admin bisa memanage CAPsMAN dengan mudah melalui web tanpa harus login ke winbox mikrotik. Memang tidak semua fitur yang ada di UAP Controller bisa disajikan di aplikasi web ini karena keterbatasan waktu dan juga hanya fungsi-fungsi penting yang sesuai kebutuhan saja yang ditampilkan.


Aplikasi Web Mikrotik CapsMan Controller

Penulis membuat Aplikasi Web Mikrotik CapsMan Controller menggunakan PHP versi 5.1.6, MySQL, jQuery dan Ajax serta Web Server menggunakan Apache versi 2.2.3.

Beberapa fitur yang disajikan di aplikasi ini antara lain.

  • CAP Management
    • Set Channel / Frekuensi.
    • Set Tx Power.
    • Restart & Shutdown.
  • Client Wireless Management
    • Set nama perangkat atau host.
    • Set nama pemilik perangkat atau user.
    • Rekonek client untuk memaksa client pindah ke AP lain yang lebih besar signalnya.
    • Menampilkan log koneksi client.
    • Reject access dari client tertentu.
    • Cek kualitas koneksi wireless client dengan icmp.

Mikrotik CAPsMAN Controller

Mikrotik CAPsMAN Controller



Mikrotik CAPsMAN Controller

Mikrotik CAPsMAN Controller



Mikrotik CAPsMAN Controller

Mikrotik CAPsMAN Controller



Persyaratan

Server Web

Aplikasi Web PHP ini menggunakan Mikrotik API routeros_api.class.php untuk berkomunikasi dengan mikrotik dan tentunya sebuah Server Web. Untuk itu topologi berubah menjadi seperti ini (ada penambahan network SERVER):

Router Mikrotik

  • WAN: 10.10.10.2/30
  • TRUNK: 192.168.100.1/24
    • LAN A
      • VLANID: 10
      • IP Address: 192.168.10.254/24
    • LAN B
      • VLANID: 20
      • IP Address: 192.168.20.254/24
    • HOTSPOT
      • VLANID: 30
      • IP Address: 172.16.30.254/24
    • CAP
      • VLANID: 99
      • IP Address: 192.168.99.62/26
  • SERVER: 192.168.70.14/28
Topologi Network

Topologi Network


User api Mikrotik

Untuk menjalankan service API di mikrotik buat dahulu group dan user api di router atau gateway, CAPsMAN dan CAP.

  • Group: grapi
    • Policies: write, test, api, read, policy
  • User: usrapi
    • Group: grapi
    • Password: password
/user group add name=grapi policy=write,test,api,read,policy 
/user add name=usrapi group=grapi password=password


Kemudian aktifkan service api di mikrotik (router, CAPsMAN dan CAP).

User group api

User group api



Database capsman (MySQL)

Buat database capsman (MySQL) dengan satu buah table hostname.

  • Name: capsman
  • Host: localhost
  • User: yudi
  • Password: password

--
-- Table structure for table `hostname`
--

DROP TABLE IF EXISTS `hostname`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `hostname` (
  `mac` char(17) NOT NULL,
  `hostname` varchar(40) DEFAULT NULL,
  `user` varchar(40) DEFAULT 'Unidentified User',
  PRIMARY KEY (`mac`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

Tabel hostname ini digunakan untuk menyimpan nama device (PC, Laptop/Notebook atau smartphone) dan user yang terhubung ke jaringan wireless. Apabila tidak diisi maka default nama device adalah Noname dan default nama user adalah Unidentified User.

Setup Apache Web Server dengan PHP

Untuk langkah ini silahkan ikuti tutorial yang banyak dituliskan di google 😊.

Download Source Code

Download source code Aplikasi Web Mikrotik CAPsMAN Controller. Kemudian ekstrak atau unzip file source code di root html. Misal jika root html adalah /var/www maka otomatis akan dibuat direktori capsman dengan struktur seperti ini:

/var/www/capsman/
├── accessList.php
├── api
│   ├── index.php
│   └── routeros_api.class.php
├── caps.php
├── configCaps.php
├── css
│   ├── capsman.css
│   ├── images
│   │   ├── ui-icons_444444_256x240.png
│   │   ├── ui-icons_555555_256x240.png
│   │   ├── ui-icons_777620_256x240.png
│   │   ├── ui-icons_777777_256x240.png
│   │   ├── ui-icons_cc0000_256x240.png
│   │   └── ui-icons_ffffff_256x240.png
│   ├── index.php
│   └── jquery-ui.css
├── editUser.php
├── getCap.php
├── images
│   ├── CAPsMAN.jpg
│   ├── favicon.ico
│   ├── index.php
│   ├── jquery-logo.jpg
│   ├── jquery-logo-trans.png
│   ├── main_img.png
│   └── mikrotik_logo_transparent.png
├── includes
│   ├── capsman.inc.php
│   ├── footer.inc.php
│   ├── functions.inc.php
│   ├── header.inc.php
│   ├── index.php
│   ├── mysql.inc.php
│   └── selectRefresh.inc.php
├── index.php
├── js
│   ├── capsman.js
│   ├── index.php
│   ├── jquery-1.12.4.js
│   ├── jquery-1.6.1.min.js
│   └── jquery-ui.js
├── setSub.php
├── showSubLog.php
├── showSub.php
├── showSubPing.php
└── subscribers.php


Edit file-file konfigurasi ini:

  • capsman/includes/mysql.inc.php

    DEFINE ('DB_USER', 'yudi');
    DEFINE ('DB_PASSWORD', 'password');
    DEFINE ('DB_HOST', 'localhost');
    DEFINE ('DB_NAME', 'capsman');
    
  • capsman/includes/capsman.inc.php

    DEFINE ('IP_CAPS', '192.168.99.27');
    DEFINE ('IP_GW', '192.168.99.62');
    DEFINE ('API_USR', 'usrapi');
    DEFINE ('API_PASS', 'password');
    

    Jika mikrotik CAPsMAN berfungsi juga sebagai gateway samakan ip address-nya.

Buka link http://alamat_web_server/capsman/ maka akan ditampilan halaman awal:

Mikrotik CAPsMAN Controller

Mikrotik CAPsMAN Controller



Managed Access Points (CAP)

Yang dapat dilakukan di menu ini adalah

  • Set Channel / Frekuensi.
  • Set Tx Power.

Seperti contoh pada gambar-gambar di bawah kita akan mengubah Transmit (Tx) Power AP1 dari 13dBm menjadi 14dBm.

Managed Access Points

Access Points



AP1 Info

AP1 Info



AP1 Info

AP1 Info



Ubah Tx Power menjadi 14dBm

Ubah Tx Power menjadi 14dBm



Managed Access Points

Access Points



Active Wireless Users

Set nama device dan user

Saat tabel masih kosong atau tidak ada data, tampilan client wireless akan nampak seperti gambar di bawah.

List client wireless

List client wireless

Klik salah satu client dengan ip address 192.168.120.202 untuk set nama device dan user.

Edit client: hostname dan user

Edit client: hostname dan user



Edit client: hostname dan user

Edit client: hostname dan user

Setelah diedit dan klik tombol Apply maka tampilan client wireless akan seperti gambar di bawah.

List client wireless

List client wireless


Data ini sudah tersimpan di table hostname.

mysql> select * from hostname where mac='6C:71:D9:B2:1C:FF';
+-------------------+----------+-------------------+
| mac               | hostname | user              |
+-------------------+----------+-------------------+
| 6C:71:D9:B2:1C:FF | PC127    | Arief Yudhawarman |
+-------------------+----------+-------------------+
1 row in set (0.00 sec)


Log koneksi client

Klik salah satu client misal PC127 lalu klik tombol Log Connection maka akan diperlihatkan log koneksi client tersebut.

Log koneksi client wireless

Log koneksi client wireless



Fitur Ping Client Wireless

Klik salah satu client misal PC127 lalu klik tombol Ping Subscriber.
Ping Client Wireless

Ping Client Wireless



Reject Client Wireless

Kita ingin blok koneksi misal dari client REDMI 1S maka klik tombol silang (X).
Reject Client Wireless

Reject Client Wireless


Untuk melihat apakah client sudah diblok klik menu Blocked Users.
List Blocked Clients

List Blocked Clients


Untuk membuka akses dari client tersebut maka klik tombol centang (). Kembali ke menu Active Wireless Users lalu lihat log koneksi client REDMI 1S. Terlihat beberapa baris log akses wireless client yang di-reject sebelum akhirnya dibuka kembali (statusnya menjadi connected).
Log koneksi client wireless

Log koneksi client wireless



Authentication, Authorization, and Accounting (AAA)

Authentication

Di aplikasi ini tidak ada pembatasan siapa yang bisa melihat isi web. Untuk mencegah agar orang-orang yang tidak berkepentingan bisa masuk dan mengontrol aplikasi capsman ini maka kita bisa buat autentikasi dasar dengan apache (Set up Basic Authentication in Apache Using .htaccess On CentOS 7).

Alternatif lain adalah buat autentikasi user ke Server LDAP. Berikut ini contohnya di file /etc/httpd/conf/httpd.conf

<VirtualHost *:81>
    ServerName capsman.mydomain.org
    ServerAdmin webmaster@mydomain.org
    DocumentRoot /var/www/capsman
    ErrorLog logs/capsman_log
    CustomLog logs/capsman_access_log common
    DirectoryIndex index.html index.php
    <Directory "/var/www/capsman">
      AuthType Basic
      AuthBasicProvider ldap
      AuthName "Please input your account."
      AuthzLDAPAuthoritative off
      AuthLDAPURL ldap://serverldap.mydomain.org:389/ou=people,dc=mydomain,dc=org?uid?sub?(uid=*)
      AuthLDAPBindDN "uid=arief,ou=people,dc=mydomain,dc=org"
      AuthLDAPBindPassword password
      Require ldap-attribute objectClass=zimbraAccount
    </Directory>
</VirtualHost>

Kelemahan autentikasi model di atas adalah semua user domain mydomain.org bisa login ke aplikasi capsman.

Authorization

Kita bisa memperketat autentikasi dengan membuat group policy untuk autorisasi yakni membatasi akses autentikasi user (user yang bisa login) ke resource tertentu. Group administrator bisa melakukan apa saja seperti ubah kanal dan power CAP. Group operator hanya bisa melakukan rekonek client dan reject client. Dan group user hanya bisa memonitor tanpa bisa melakukan action. Kita buat table groups di database capsman.

mysql> select * from groups;
+-----+---------------+--------------------------------------+
| gid | group         | comment                              |
+-----+---------------+--------------------------------------+
| 100 | Administrator | Super User                           | 
| 101 | Operator      | Have all privileges except config AP | 
| 102 | User          | Read only access                     | 
+-----+---------------+--------------------------------------+
3 rows in set (0.02 sec)

Untuk autentikasi user bisa dengan membuat table users statik berisi data userid dan password di database capsman atau menggunakan resource yang sudah ada. Di sini penulis menggunakan LDAP untuk autentikasi dan beri hak autorisasi untuk user-user tertentu yang bisa login.

mysql> select * from users;
+-----+---------------------+--------+---------------------+-----+
| id  | email               | status | created             | gid |
+-----+---------------------+--------+---------------------+-----+
| 201 | admin@mydomain.org  | active | 2017-10-03 11:04:25 | 100 | 
| 202 | opr1@mydomain.org   | active | 2017-10-03 11:04:25 | 101 | 
| 203 | opr2@mydomain.org   | active | 2017-10-03 11:04:25 | 101 | 
| 204 | user1@mydomain.org  | active | 2017-10-03 13:21:13 | 102 |
| 205 | user2@mydomain.org  | active | 2017-10-03 13:21:13 | 102 |  
+-----+---------------------+--------+---------------------+-----+
5 rows in set (0.00 sec)


Accounting

Hal yang perlu dilakukan lagi adalah mencatat aktivitas apa saja yang telah dilakukan oleh autentikasi user. Proses ini dinamakan accounting.

mysql> desc set_ap;
+--------+-------------------------------------+------+-----+-------------------+----------------+
| Field  | Type                                | Null | Key | Default           | Extra          |
+--------+-------------------------------------+------+-----+-------------------+----------------+
| no     | int(11)                             | NO   | PRI | NULL              | auto_increment | 
| id     | int(4)                              | NO   |     | NULL              |                | 
| modify | enum('config','restart','shutdown') | YES  |     | NULL              |                | 
| ap     | varchar(20)                         | YES  |     | NULL              |                | 
| date   | timestamp                           | NO   |     | CURRENT_TIMESTAMP |                | 
+--------+-------------------------------------+------+-----+-------------------+----------------+
5 rows in set (0.00 sec)
mysql> select * from set_ap limit 5;
+----+-----+--------+------+---------------------+
| no | id  | modify | ap   | date                |
+----+-----+--------+------+---------------------+
|  1 | 201 | config | AP1  | 2017-10-03 16:06:35 | 
|  2 | 201 | config | AP1  | 2017-10-03 16:07:59 | 
|  3 | 201 | config | AP1  | 2017-10-06 08:35:54 | 
|  4 | 201 | config | AP1  | 2017-10-08 08:39:39 | 
|  5 | 201 | config | AP1  | 2017-10-09 07:38:51 | 
+----+-----+--------+------+---------------------+
5 rows in set (0.00 sec)
mysql> desc set_subscribers;
+--------+----------------------------------------------------------+------+-----+-------------------+----------------+
| Field  | Type                                                     | Null | Key | Default           | Extra          |
+--------+----------------------------------------------------------+------+-----+-------------------+----------------+
| no     | int(11)                                                  | NO   | PRI | NULL              | auto_increment | 
| id     | int(4)                                                   | NO   |     | NULL              |                | 
| modify | enum('addHost','editUser','reconnect','block','unblock') | YES  |     | NULL              |                | 
| mac    | varchar(17)                                              | YES  |     | NULL              |                | 
| date   | timestamp                                                | NO   |     | CURRENT_TIMESTAMP |                | 
+--------+----------------------------------------------------------+------+-----+-------------------+----------------+
5 rows in set (0.00 sec)
mysql> select * from set_subscribers limit 5;
+----+-----+-----------+-------------------+---------------------+
| no | id  | modify    | mac               | date                |
+----+-----+-----------+-------------------+---------------------+
|  1 | 201 | editUser  | 00:0C:42:E1:83:E6 | 2017-10-03 11:53:50 | 
|  2 | 201 | editUser  | 00:0C:42:E1:83:E6 | 2017-10-03 11:54:37 | 
|  3 | 201 | reconnect | 00:0C:42:E1:83:E6 | 2017-10-03 15:57:09 | 
|  4 | 201 | block     | 74:EA:3A:D9:BC:FF | 2017-10-03 15:57:33 | 
|  5 | 201 | unblock   | 74:EA:3A:D9:BC:FF | 2017-10-03 15:57:38 | 
+----+-----+-----------+-------------------+---------------------+
5 rows in set (0.00 sec)

Referensi:


Todo

  1. Fitur frequency usage akan memudahkan operator mencari kanal yang bebas dari pemakaian. Sedangkan scanner memperlihatkan seberapa padat trafik wireless.
    Frequency usage

    Frequency usage


    Scanner

    Scanner

  2. Monitor trafik client per Virtual AP.
    Trafik client di AP4

    Trafik client di AP4

  3. Fitur untuk enable dan disable Virtual AP.
  4. Konfigurasi CAP baru melalui web.
Advertisements

Written by awarmanf

March 9, 2018 at 3:02 am

Posted in cap, CAPsMAN, Mikrotik, php, Wireless

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: