Authentication
In many environments different Authentication is required. By default FMADIO capture systems using built in BASIC authentication over HTTP. As this makes configuration and setup simple but is very weak security setting.
Supported Authentication
BAISC (insecure)
HTTPS Only + BASIC
RADIUS
Active Directory (SSO via OAUTH 2.0)
Google Cloud (SSO via OAUTH 2.0)
Ping Identity Cloud (SSO via OAUTH 2.0)
HTTPS Only
By default HTTP and HTTPS are enabled on the GUI. In any security setting HTTP needs to be disabled, as its an unsecure protocol. To disable HTTP edit the config file
General Config
Find the "Security" section as follows
Change the "HTTPAccess" section from "enable" to false as follows
Save the file
Restart Nginx
Then restart nginx as follows
NGINX will restart automatically within 60 seconds with the updated configuration. Only HTTPS access is possible.
SSO configuration is more complicated, please contact support@fmad.io and we can walk you thru the setup personally
RADIUS
FW: 7563+
We support RADIUS authentication using the freeradius client. Configuration is as follow
General Config
Edit the configuration file
Find the "Security" section, example shown below
Disable HTTP Access
Change the following, this disabled the HTTP protocol
Changes the following, this enables RADIUS as the authentication method
Configure your RADIUS login information
Finally the Timeout, this is how long the system waits until it will automatically logout the user and requirement them to re-authenticate. Value is in nanoseconds, scientific notation and formula is no problem. Per below, 24 hours * 60 min * 60 sec * 1e9 (nanos)
Restart Nginx
Restart nginx as follows, it will re-spawn within 60sec automatically
Login
You should see a login page when accessing FMADIO as follows
TROUBLESHOOTING
If there is some problems, please confirm on CLI using radclient, example as follows.
Active Directory (SSO via OAUTH 2.0)
FW:7608+
FMADIO Capture devices can authenticate the users using Active Directory via the OAUTH 2.0 protocol. This enable Single Sign On with ADFS.
Public IP Testing
In the follow example we have used a reverse SSH tunnel to temporarily put FMADIO system on a public IP, as Azure Active Directory services require internet accessible devices for the redirect_uri.
For an On Premise Active Directory server this is not required.
Example Reverse SSH Tunnel
NOTE: SSH tunnel should not use localhost, as all localhost sourced requests bypass authentication. Instead use the IP address of the management interface
General Config
Start by editing the general FMADIO configuration file
Then setting HTTP (un-encrypted) access to "disable", and Auth method to "OAUTH", example shown below. The other security fields can be left as is.
Save the file and ensure there are no parse errors by running fmadiolua /opt/fmadio/etc/time.lua
OAUTH Config
Next create a file name
This file contains the ADFS OAUTH End points as follows
These fields are from the ADFS Endpoint URI information, for example as follows. We created a fmadio sign in entry, this has the following client_id entered above.
The "discovery" config in the above needs to be the OpenID Connect Metadata document, as seen below.
the "client_id" is the shown below
The "client_secret" in the above config needs to be the Value shown below, not the secretID
Finally the "redirect_uri" needs to be registered as follows.
Once config is complete, please confirm no syntax errors by running
Correct output is as follows, if there are any syntax errors please correct.
Restart nginx
Restart nginx to load in the new configuration file, by killing the process as below. It will reswpan on a 1min cron job automatically
Logging in
Next point a browser to the FMADIO device, it should redirect you to the Active Directory login page as follows.
Login to the system using your Azure / Microsoft credentials. Then the FMADIO device dashboard will be shown as below
Logout
Logout is the same, using the logout button shown below
Then choose an account to sign out of
Google Cloud (SSO via OAUTH 2.0)
FW:7608+
While less practical as its typically for publicly accessible sites, it can be used with a Google Cloud VPC to tunnel authentication requests from a private network to Google Cloud infrastructure.
In this example we just reverse ssh tunnel an FMADIO system onto the public internet (strongly discouraged) for demonstration purposes only.
General Config
Start by editing the general FMADIO configuration file
Then setting HTTP (un-encrypted) access to "disable", and Auth method to "OAUTH", example shown below. The other security fields can be left as is.
Save the file and ensure there are no parse errors by running fmadiolua /opt/fmadio/etc/time.lua
OAUTH Config
Next create a file name
This file contains the Google Cloud OAUTH End points as follows.
The "clientid" and "client_secret" need to be replaced with the generated authentication information from google per below. The above is a throw away example only
Google Credentials
Next generate Google OAUTH credentials as follows.
Then fill in the information, as follows. Google is a bit more strict and requires TLD endpoints not raw IPs
Which results in the following secret information
Update the oauth_opts.lua file above with the information
Restart nginx
Restart nginx to load in the new configuration file, by killing the process as below. It will reswpan on a 1min cron job automatically
Logging In
Next point the browser to the FMADIO device and it will redirect to Google Sign in account
Login using your Google account information, and it will re-direct you to the FMADIO dashboard.
Any further questions please contact support@fmad.io for assistance.
Ping Identity (SSO via OUAUTH 2.0)
FW:7608+
Ping Identity is a popular onprem authentication system, typically used in large organizations. We support Single Sign On with their product suite, below is an example configuration example setup using the Cloud Services. This example uses a reverse SSH tunnel to put the FMADIO device on a publicly accessible IP (we strongly discourage) for demonstration purposes only, to replicate setting up an On Premise install.
General Config
Start by editing the general FMADIO configuration file
Then setting HTTP (un-encrypted) access to "disable", and Auth method to "OAUTH", example shown below. The other security fields can be left as is.
Save the file and ensure there are no parse errors by running fmadiolua /opt/fmadio/etc/time.lua
OAUTH Config
Next create a file name
This file contains the Ping Identity OAUTH End points as follows.
The "clientid" and "client_secret" need to be replaced with the generated authentication information from Ping Identity interface per below. The above is a throw away example only
Ping Identity Credentials
We setup a web application using Ping Identity interface as follows. The key fields are shown in red.
These fields are mapped directly into the oauth_opts.lua configuration file above.
Restart nginx
Restart nginx to load in the new configuration file, by killing the process as below. It will reswpan on a 1min cron job automatically.
Logging In
Next point the browser to the FMADIO device and it will redirect to Ping Idneitty SSO account as follows
After a successful authentication the FMADIO dashboard is seen
Any further questions or problems, please contact us support@fmad.io
PAM LDAP
FW: 8529+
FMADIO systems support Linux PAM ( https://github.com/linux-pam/linux-pam ) as an authetication method. One option for centralized authentication is to use LDAP via PAM.
1) First run fmadiocli settings to set the authentication method
https://docs.fmad.io/fmadio-documentation/cli-reference/fmadiocli#config-security-auth
2) We also strongly recommend to disable HTTP access as all username / passwords are sent over un-encrypted HTTP
https://docs.fmad.io/fmadio-documentation/cli-reference/fmadiocli#config-security-http
3) Configure LDAP client nslcd. Copy the default config file as follows
The default config looks like the following
NOTE: ensure the permissions of
Are set as root.root and user only read/write
Otherwise nslcd will fail to start due to in-secure permissions
Modify the uri, base and any other LDAP specific configs to the enviroment and save it
4) reboot system
5) check LDAP connectivity
Changing the username/domain/ip address etc to match your environment
Successful authentication looks like the following
Once this is working, both SSH, WWW-Admin and WWW-User LDAP posix group members can login to the system.
The LDAP posixGroups are
fmadio-ssh-admin - for SSH access
fmadio-www-admin - for WWW admin access (can change anything)
fmadio-www-user - for WWW user access (monitoring and pcap downloading)
6) Both SSH and WWW now fully configured using LDAP as centralized authentication
LDAP Optional
Some environments require a notice when logging in, such as the following
This can be customized as follows
1) copy the default template
2) Edit the content of
3) restart nginx
kill nginx and wait 60sec for it to restart
Troubleshooting
Configuration usually does not go as planned, as such heres some tips to try
1) run nslcd in the foreground
This will check the /etc/nslcd.conf configuration file is working correctly, either config typeo or LDAP server problems.
Once its running ensure local lookups work correctly as follows
2) check nginx config files
The nginx logfiles are located in
Any errors there might help understand the issues
3) check syslog file for PAM logs
This will print out logs of all PAM messages and may help debugging
Last updated