Files

80 lines
2.8 KiB
Markdown
Raw Permalink Normal View History

source: Extensions/Two-Factor-Auth.md
path: blob/master/doc/
2014-12-24 21:22:02 +00:00
2017-08-21 11:52:32 -04:00
# About
2014-12-24 21:22:02 +00:00
2019-09-09 05:48:35 -05:00
Over the last couple of years, the primary attack vector for internet
accounts has been static passwords. Therefore static passwords are no
longer sufficient to protect unauthorized access to accounts. Two
Factor Authentication adds a variable part in authentication
procedures. A user is now required to supply a changing 6-digit
passcode in addition to it's password to obtain access to the account.
LibreNMS has a RFC4226 conform implementation of both Time and Counter
based One-Time-Passwords. It also allows the administrator to
configure a throttle time to enforce after 3 failures exceeded. Unlike
RFC4226 suggestions, this throttle time will not stack on the amount of failures.
2014-12-24 21:22:02 +00:00
2017-08-21 11:52:32 -04:00
# Types
2014-12-24 21:22:02 +00:00
2016-01-30 21:06:58 -05:00
In general, these two types do not differ in algorithmic terms.
The types only differ in the variable being used to derive the passcodes from.
2019-09-09 05:48:35 -05:00
The underlying HMAC-SHA1 remains the same for both types, security
advantages or disadvantages of each are discussed further down.
2014-12-24 21:22:02 +00:00
2017-08-21 11:52:32 -04:00
## Timebased One-Time-Password (TOTP)
2014-12-24 21:22:02 +00:00
2019-09-09 05:48:35 -05:00
Like the name suggests, this type uses the current Time or a subset of
it to generate the passcodes. These passcodes solely rely on the
secrecy of their Secretkey in order to provide passcodes. An attacker
only needs to guess that Secretkey and the other variable part is any
given time, presumably the time upon login. RFC4226 suggests a
resynchronization attempt in case the passcode mismatches, providing
the attacker a range of up to +/- 3 Minutes to create passcodes.
2014-12-24 21:22:02 +00:00
2017-08-21 11:52:32 -04:00
## Counterbased One-Time-Password (TOTP)
2014-12-24 21:22:02 +00:00
2019-09-09 05:48:35 -05:00
This type uses an internal counter that needs to be in sync with the
server's counter to successfully authenticate the passcodes. The main
advantage over timebased OTP is the attacker doesn't only need to know
the Secretkey but also the server's Counter in order to create valid
passcodes. RFC4226 suggests a resynchronization attempt in case the
passcode mismatches, providing the attacker a range of up to +4
increments from the actual counter to create passcodes.
2014-12-24 21:22:02 +00:00
2017-08-21 11:52:32 -04:00
# Configuration
2014-12-24 21:22:02 +00:00
Enable Two-Factor:
2019-09-09 05:48:35 -05:00
2014-12-24 21:22:02 +00:00
```php
$config['twofactor'] = true;
```
2016-01-07 23:02:18 +01:00
Set throttle-time (in seconds):
2019-09-09 05:48:35 -05:00
2014-12-24 21:22:02 +00:00
```php
$config['twofactor_lock'] = 300;
```
2017-08-21 11:52:32 -04:00
# Usage
2014-12-24 21:22:02 +00:00
These steps imply that TwoFactor has been enabled in your `config.php`
Create a Two-Factor key:
2019-09-09 05:48:35 -05:00
2014-12-24 21:22:02 +00:00
- Go to 'My Settings' (/preferences/)
- Choose TwoFactor type
- Click on 'Generate TwoFactor Secret Key'
2016-01-07 23:02:18 +01:00
- If your browser didn't reload, reload manually
2014-12-24 21:22:02 +00:00
- Scan provided QR or click on 'Manual' to see the Key
2017-08-21 11:52:32 -04:00
## Google Authenticator
2014-12-24 21:22:02 +00:00
2016-01-07 23:02:18 +01:00
Installation guides for Google Authenticator can be found [here](https://support.google.com/accounts/answer/1066447?hl=en).
2014-12-24 21:22:02 +00:00
Usage:
2019-09-09 05:48:35 -05:00
2014-12-24 21:22:02 +00:00
- Create a key like described above
- Scan provided QR or click on 'Manual' and type down the Secret
- On next login, enter the passcode that the App provides