pam_duo
— PAM
module for Duo authentication
pam_duo.so
[conf=
⟨FILENAME⟩]
pam_duo
provides secondary authentication
(typically after successful password-based authentication) through the Duo
authentication service.
PAM module configuration options supported:
- conf
- Specify an alternate configuration file to load. Default is
/usr/local/etc/duo/pam_duo.conf
- debug
- Debug mode; send log messages to stderr instead of syslog.
The INI-format configuration file must have a
“duo
” section with the following
options:
host
- Duo API host (required).
ikey
- Duo integration key (required).
skey
- Duo secret key (required).
groups
- If specified, Duo authentication is required only for users whose primary
group or supplementary group list matches one of the space-separated
pattern-lists
(see PATTERNS below).
failmode
- On service or configuration errors that prevent Duo authentication, fail
“
safe
” (allow access) or
“secure
” (deny access). Default is
“safe
”.
pushinfo
- Send command to be approved via Duo Push authentication. Default is
“
no
”.
http_proxy
- Use the specified HTTP proxy, same format as the HTTP_PROXY environment
variable.
autopush
- Automatically send a login request to the first factor (usually push),
instead of prompting the user. Default is "no".
prompts
- Set the maxiumum number of prompts pam_duo will show before denying
access. Default is 3.
fallback_local_ip
- If unable to detect the authorizing user's IP address, fallback on the
server's IP. Default is "no".
send_gecos
- Instead of using the unix username, send Duo the contents of the GECOS
field from /usr/local/etc/passwd. Default is "no".
An example configuration file:
[duo]
host = api-deadbeef.duosecurity.com
ikey = SI9F...53RI
skey = 4MjR...Q2NmRiM2Q1Y
pushinfo = yes
autopush = yes
Other authentication restrictions may be implemented using
pam_listfile(8),
pam_access(8),
etc.
A
pattern
consists of zero or more non-whitespace characters, ‘*’ (a
wildcard that matches zero or more characters), or ‘?’ (a
wildcard that matches exactly one character).
A
pattern-list
is a comma-separated list of patterns. Patterns within pattern-lists may be
negated by preceding them with an exclamation mark (‘!’). For
example, to specify Duo authentication for all users (except those that are
also admins), and for guests:
groups = users,!wheel,!*admin
guests
- /usr/local/etc/duo/pam_duo.conf
- Default configuration file path
pam_duo
was written by
Duo Security
⟨support@duosecurity.com⟩
When used with OpenSSH's
sshd(8),
only PAM-based authentication can be protected with this module; pubkey
authentication bypasses PAM entirely. OpenSSH's PAM integration also does
not honor an interactive
pam_conv(3)
conversation, prohibiting real-time Duo status messages (such as during
voice callback).