Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

A summary of the mandatory steps for the installation (detailed in the linked sections below):

...

Anchor
PostgreSQL
PostgreSQL
2. PostgreSQL

...

WiFiMon measures the performance of WiFi networks by embedding JavaScript code in frequently visited websites. Performance tests are triggered when End Users visit these websites and, in particular, after a web page is loaded so that browsing experience is not impacted by WiFiMon. Notably, these websites are not only visited by End Users residing in the monitored subnetsSubnets, but also from End Users outside them. Thus, alleviating the WAS from processing excessive traffic requires that performance tests consider measurements originating only from the WiFi networks that are monitored. To that end, a list of the registered subnets Subnets from which End User measurements are processed by the WAS are maintained in "subnets" table. The creation of this table is detailed in the following code block.

Code Block
languagesql
CREATE TABLE subnets (
subnet text,
subnet_id serial PRIMARY KEY );

2.3. Creation of "

...

accesspoints" Table

...

Table "accesspoints" is used to store information related to the Access Points monitored by WiFiMon. This information includes the latitude and longitude of Access Points, the building and floor in which they are installed and additional notes about them. This information is later used to depict performance results of End User measurements per Access Point. The creation of the "accespoints" table is detailed in the following code block.

Code Block
languagesql
CREATE TABLE usersaccesspoints (
idapid serial PRIMARY KEY,
emailmac text NOT NULL,
password_hashlatitude text NOT NULL,
longitude text,
building text,
rolefloor text NOT NULL),
notes text);

2.4. Creation of "

...

users" Table

Table accesspoints "usersis used to store information related to WiFiMon Users. WiFiMon GUI can be accessed by two types of WiFiMon Users: ADMIN and USER. ADMIN has full privileges to the Access Point information (latitude, longitude, building, floor, notes) in the database. This information is later used to depict the measurements per Access Point WiFiMon GUI. An ADMIN is capable of adding/removing registered Subnets and Access Points as well as adding/removing WiFiMon Users. In contrast, a USER can navigate through the WiFiMon GUI dashboards, but is incapable of performing administration actions. The creation of the "users" table is detailed in the following code block.

Code Block
languagesql
CREATE TABLE accesspointsusers (
apidid serial PRIMARY KEY,
macemail text NOT NULL,
latitudepassword_hash text,
longitude text NOT NULL,
buildingrole text,
floor text,
notes text NOT NULL);

2.5. Creation of "options" Table

Options table stores important privacy settings such as hiding or Table "options" stores information related to privacy settings, e.g. hiding/showing End User related data specific data in the WiFiMon GUI. Correlation options are also included in this table. The creation of the "options" table is detailed in the following code block.

Code Block
languagesql
CREATE TABLE options (
optionsid serial PRIMARY KEY,
userdata text NOT NULL,
uservisualoption text NOT NULL,
correlationmethod text NOT NULL
);

Now, exit from the database by entering \q.

Set Privileges

Exiting the database is possible using the command "\q" within the terminal-based front-end of PostgreSQL.

Setting Privileges in PostgreSQL

Setting To set SELECT, INSERT, DELETE, UPDATE privileges to for the database user, e.g. "wifimon_user, follow requires the commands bellow:

su postgres

psql

following commands issued within the terminal-based front-end of PostgreSQL:

Code Block
languagesql
GRANT USAGE ON SCHEMA public to wifimon_user;
GRANT CONNECT ON DATABASE wifimon_database to wifimon_user;

\c wifimon_database

GRANT USAGE ON SCHEMA public to wifimon_user;
GRANT SELECT ON subnets, users, accesspoints, options TO wifimon_user;
GRANT INSERT ON subnets, users, accesspoints, options TO wifimon_user;
GRANT DELETE ON subnets, users, accesspoints, options TO wifimon_user;
GRANT UPDATE ON accesspoints, options TO wifimon_user;
GRANT USAGE, SELECT ON SEQUENCE subnets_subnet_id_seq TO wifimon_user;
GRANT USAGE, SELECT ON SEQUENCE users_id_seq TO wifimon_user;
GRANT USAGE, SELECT, UPDATE ON SEQUENCE options_optionsid_seq TO wifimon_user;
GRANT USAGE, SELECT, UPDATE ON SEQUENCE accesspoints_apid_seq TO wifimon_user;

Exit from the database by entering \qExiting the database is possible using the command "\q" within the terminal-based front-end of PostgreSQL.

Create an admin account to login

An initial ADMIN WiFiMon User should be created to allow access to the WiFiMon GUI.

su postgres

psql

for accessing the WiFiMon GUI. Within the terminal-based front-end of PostgreSQL, an ADMIN WiFiMon User is created using the commands in the following code block after connection to the WiFiMon database. Notably, passwords are stored hashed within the database.

Code Block
languagesql
\c wifimon_database

INSERT INTO users VALUES ('1', 'admin@test.com', '$2a$06$AnM.QevGa4BPGg7hc3nEBua6stnbZ8h4PrCjSbDxW.LWL7t4MX8vO', 'ADMIN');

By inserting Inserting this entry to the "users table, you will be " table creates an ADMIN WiFiMon User that is able to login as ADMIN with in the WiFiMon GUI using the following credentials:

Email: admin@test.com

Password: admin1

This (this account can be later deleted from the WiFiMon GUI ; however(after step 5). However, an ADMIN account should always be present in order to access the WiFiMon GUI and manage the WiFiMon Users, Access Points and Subnets):

Email: admin@test.com

Password: admin1

We suggest that you change your password We strongly suggest that the password is changed from the WiFiMon GUI when the installation is complete (Section step 5).

Anchor
java
java
3. Java

...

Installation

WiFiMon currently supports Java 8. Installing Java 8 is detailed in the sequel for the Debian 10 Operating System. These instructions are taken from HERE.

Installing the OpenJDK 8 in Debian 10 requires

...

To install Java 8, please see the instructions at HERE. These instructions are tested for a Debian 10 Installation and will install the OpenJDK 8 using the AdoptOpenJDK repository. The following required commands are taken from the aforementioned linkfollowing:

sudo apt update
sudo apt install -y apt-transport-https ca-certificates wget dirmngr gnupg software-properties-common
wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add -
sudo add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/
sudo apt update
sudo apt install -y adoptopenjdk-8-hotspot

Verify that Java is installed Java installation can be verified with the following command: java -version

Set Setting the JAVA_HOME variable : Print the Java alternatives in your system with requires (i) finding the installed Java alternatives using the following command "sudo update-alternatives --config java" Make changes to and (ii) modifying the /etc/environment configuration file based on the output of the previous command. For the adoptojdk-8-hotspot, enter JAVA_HOME requires the following value:

JAVA_HOME="/usr/lib/jvm/adoptopenjdk-8-hotspot-amd64", i.e without /bin/java at the end.

Changes are applied with the following commandApply changes: source /etc/environment

Note that Ubuntu 18.04 repositories still include Java 8 which can be installed by:

apt-get install -y default-jdk default-jre

Anchor
elasticsearch
elasticsearch
4. Elasticsearch and Kibana

To install Elasticsearch Installing Elasticsearch 7.4.2 and Kibana , execute 7.4.2, requires executing the following commands:

  • Elasticsearch 7.4.2

...

In the configuration file of Elasticsearch (/etc/elasticsearch/elasticsearch.yml), insert/change the following lines . Note thatshould be inserted/changed. Notably, bold parts must be adjusted to your the particular configuration of the reader. In the following, we configure Elasticsearch to be accessible from the outside of the WiFiMon Analysis Stationpublicly accessible:

cluster.name: elasticsearch
node.name: ${HOSTNAME}

node.master: true
node.voting_only: false
node.data: true
node.ingest: true
node.ml: false
cluster.remote.connect: false
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: INSERT the Fully Qualified Domain Name (WAS_FQDN) to which the server listens
discovery.seed_hosts: [“INSERT the WAS_FQDN to which the server listens”]
cluster.initial_master_nodes: INSERT the HOSTNAME (not WAS_FQDN) of the server
xpack.ml.enabled: false
xpack.security.enabled: false

You may start the The Elasticsearch cluster should be started with the following command: service elasticsearch restart

Verify Verifying that Elasticsearch is running is possible via: netstat -tlnpu (ports 9200, 9300)

Note that Notably, "cluster.initial_master_nodes" must be commented out after the first initialization of your the Elasticsearch cluster. The above configuration assumes that your the setup includes only one a single Elasticsearch node. For Configuration for more advanced setups , you may find information is available in the following WiFiMon guide "RADIUS Logs Streaming to Elasticsearch - Simulation".

Anchor
kibana_configure
kibana_configure
Kibana Configuration

After installing Kibana, the installation some following configurations are required . Open in the Kibana configuration file (/etc/kibana/kibana.yml) and make the . The following changes should be made in the corresponding sections/fields of the configuration file. Note thatNotably, bold parts must be adjusted to your the particular configuration of the reader.

server.port: 5601
server.host: “INSERT the Fully Qualified Domain Name (WAS_FQDN) to which the server listens
server.name: “wifimon-kibana”
elasticsearch.hosts: [“http://WAS_FQDN:9200”]

server.ssl.enabled: false

You may start Kibana should be started with the following command: service kibana restart

Verify Verifying that kibana is running is possible via: netstat -tlnpu (port 5601)

...