We’re now ready to install the Moonshot software and its required dependencies. Install the software by running the following command:
bash
Configure the Moonshot APC
Next, we need to configure the Moonshot APC.
Configure FreeRADIUS
RadSec
Next we need to configure RadSec. We do this by creating a file at /etc/radsec.conf with the following:
true
Realm
We next need to configure your realm in the FreeRADIUS server so that it knows not to send any requests for your own users off to another server.
Configure your realm in /etc/raddb/proxy.conf
Open the file for editing and find the line “realm example.com {“
Above this, add the following, where YOUR_APC_REALM should be substituted by your APC realm (e.g. apc.moonshot.ja.net):
true
Channel Binding Support
We next need to configure your FreeRADIUS server to support channel bindings.
Open /etc/raddb/sites-available/abfab-tls for editing:
Scroll to the client default stanza at the bottom of the file
Edit the stanza to match the below:
If you have any other client definitions here, for example to distinguish between internal and external clients, also apply the change to them.
EAP Type
Set the EAP type in use by Moonshot (EAP-TTLS) by editing /etc/raddb/mods-enabled/eap.
Find the first instance of default_eap_type = md5 and change it to TTLS, i.e.:
Other EAP types should be supported (PEAP and MD5 have been tested).
Returning the User-Name
The APC must return the User-Name attribute in its RADIUS response.
As root, find the post-auth section in the /etc/raddb/sites-available/abfab-tr-idp file.
Insert the below at the top of the section, if it does not already exist:
Save the file.
As root, find the post-auth section in the /etc/raddb/sites-available/inner-tunnel file.
At the top of the post-auth section, insert the following text:
Then look for the following text towards the bottom of the post-auth section:
If the text does not exist, insert it above the comments that describe the line "Post-Auth-Type REJECT {".
Remove the comments from the update statements in the text.
Save the file.
Resource Provider Authentication
All Resource Providers in the Trust Router network, including all IdPs and RP Proxies and the Trust Router itself, need to authenticate themselves to the APC using Moonshot. This means that for every service or organisation, you must provision a credential on the APC.
In a production environment, we recommend you use a method of Resource Provider Authentication that integrates well with your chosen method of managing your Trust Router infrastructure.
See for options to define credentials.
We recommend using an automatic means to provision credential files, such as an online portal.
Defining the APC credential
During testing, we recommend to define credentials that your Resource Providers can use to authenticate to the APC. We will create a user with username "testapc" and password "testing".
Open /etc/raddb/users for editing and put the following at the top of the file:
true
The formatting of the stanza above is very important. There should be a <tab> in between the username and Cleartext-Password, and a line break followed by a <tab> before the Reply-Message.
Provisioning the APC credential
For the APC credential you defined in the previous step, create a :
Set the <user> tag to the credential you defined in the previous step, e.g. testapc
Set the <password> tag to its appropriate password. You may wish to base64-encode the password.
Set the <realm> tag to YOUR_APC_REALM.
You can leave the <services> tag out.
You should set the <selection-rules> tag to:
selection-rulestrue
Define either of the two trust anchors as per the documentation.
For simple test infrastructures, you may leave out the trust anchors, but it is not recommended
Save the file, then deploy it onto the Trust Router that you are connecting to this APC (see Section 3.2.2 of ).
Configure the Trust Router connection
The APC is fundamental to a Trust Router network, so the next step involves configuring the Trust Router client software and configuring its connection to a Trust Router.
Set up the FreeRADIUS and Trust Router users
We need to place the FreeRADIUS user and the Trust Router users into each other's groups to allow them to read shared files of each others.
bash
Configure TIDS
The IdP also runs the Temporary ID Server (TIDS).
Open the /etc/sysconfig/tids file for editing:
true
Open the /usr/lib/systemd/system/tids.service file for editing and check that the file includes the following lines:
text
Temporary workaroundEdit the EnvironmentFile and ExecStart lines to match the above. We are fixing this in the next release.
Testing
Now that we have the Moonshot IdP installed and configured, we're now ready to test!
Tip
At this point you probably want three consoles open on the server, so that you can manually run various components separately.
Testing FreeRADIUS locally
The first test is to check whether FreeRADIUS is working in its most basic manner.
In window 1, run (as root user)
bash
OpenSSL version issue
FreeRADIUS may fail to start with an error message:
Refusing to start with libssl version OpenSSL 1.0.1e-fips 11 Feb 2013 0x01000105f (1.0.1e-15) (in range 1.0.1-0 - 1.0.1f-15) Security advisory CVE-2014-0160 (Heartbleed) For more information see http://heartbleed.comOnce you have verified libssl has been correctly patched, set security.allow_vulnerable_openssl = 'CVE-2014-0160'
This is because of how the version of OpenSSL is detected. If you are sure that you are fully up to date, then edit /etc/raddb/radiusd.conf and edit the end of the security { } section:
# #allow_vulnerable_openssl = no allow_vulnerable_openssl = 'CVE-2014-0160' }
In window 2, run (as root user)
bash
This uses the "radtest" utility which is used in the following way - radtestusername password servername port shared-secret
If this is working correctly you should see something like the following:
In window 1 - FreeRADIUS server output
In window 2 - radtest client output
Testing the Trust Router connection
To test the connection to Trust Router, we need to make sure the Temporary Identity Server (TIDS) software is running, then use the Temporary Identity Client (TIDC) software to simulate a connection to the Trust Router.
Starting the Temporary Identity Server (TIDS)
In window 3 (window 1 should still be still running the FreeRADIUS server and window 2 the radtest command), run the TIDS software:
bash
testapc@YOUR-APC-REALM is the identity that the trust router will use when provisioning keys - this makes it easy to spot in your own log files. Specifying your server's IP and hostname may seem redundant (and for single server deployments, it is!). You'll need to set the hostname and IP arguments a little differently if you want to enable some more advanced configurations (such as load balancing and key sharing).
This uses the "tids" binary which is used in the following way - tids [your-ip-address] trustrouter-gss-name] [your-hostname] [path-to-key-database]
When using Network Address Translation (NAT) or a firewall, you must specify your external IP address.
Run an APC authentication test
At this point, you must to use testapc@YOUR-APC-REALM as authentication.
The trust router configuration must be updated with the test user associated with your trust router's rp_realm filter lines.
The trust router configuration must be updated with your new APC designated as the APC for your trust router.
The trust router must have its Moonshot credential store updated with the test user and its password. See Section 3.2.2 of install a trust router ( or )
The trust router must be restarted. At this point, the trust router will attempt to authenticate itself to the APC.
In the FreeRADIUS console, you should see an Access-Accept response.
Next Steps
At this point, you now have a Moonshot APC that is working. Now for the next steps:
Automatically start the software
FreeRADIUS
To automatically start FreeRADIUS, issue the following command (as root):
If this is working correctly, you should see FreeRADIUS running as a daemon process.
TIDS
To automatically start TIDS, issue the following command (as root):
If this is working correctly, you should see TIDS running as a daemon process.
Configure a real source of Authentication
Your FreeRADIUS server can currently only authenticate a single user - "testapc". At this point, you will want to connect FreeRADIUS to your management database. The FreeRADIUS site has information and instructions for how to do this.