File: install-stanford

package info (click to toggle)
webauth 4.7.0-8
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 7,932 kB
  • sloc: ansic: 28,341; sh: 12,031; perl: 8,361; xml: 6,856; makefile: 459; php: 7
file content (413 lines) | stat: -rw-r--r-- 18,827 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
                Stanford WebAuth Installation Instructions

OVERVIEW

    This document describes installation of WebAuth for web server
    administrators at Stanford University, including Stanford-specific
    configuration and setup details.  For general installation
    instructions, see the INSTALL file at the root of the WebAuth
    distribution.

    If you have trouble with these instructions, please file a HelpSU
    ticket giving your system name, the operating system it's running, how
    far you got in these instructions, and exactly what is failing
    (including error messages and similar information).

COMPILING, TESTING, and INSTALLATION

    Where possible, you should use pre-built WebAuth packages rather than
    building WebAuth yourself.  The pre-built packages are built with
    known options and tested for compatibility and functionality with the
    operating system platforms on which they're built.  They also mean
    less installation effort.

    For Debian or Ubuntu users, install the libapache2-webauth package.
    This package is included in the base releases of both Debian and
    Ubuntu.  Newer versions for Debian may also be available from the
    backports.debian.org repository; see:

        <http://backports.debian.org/Instructions/>

    for information on how to install packages from backports.debian.org.

    To use mod_webauthldap, also install libsasl2-modules-gssapi-mit or
    libsasl2-modules-gssapi-heimdal to enable GSS-API authentication via
    SASL for the LDAP libraries.

    For Red Hat Enterprise users, WebAuth packages are available from our
    local yum repository.  See:

        <http://www.stanford.edu/services/linux/up2date-yum-repos.html>

    for information on how to configure your system to install packages
    from Stanford's local repository.  You can also simply download and
    install the RPMs from the WebAuth distribution page at:

        <http://webauth.stanford.edu/download.html>

    but it's better to use the yum repository if possible since then you
    can easily install newer versions as they're released.  The package
    name for Red Hat systems is just webauth.

    For Fedora users and other Red Hat users who cannot use the RHEL
    packages unmodified, the best approach is probably to start from the
    source packages available on the WebAuth distribution page and rebuild
    them for your local system.

    On other platforms, you will need to build and install WebAuth
    yourself.  Follow the general installation instructions up through the
    INSTALLATION section, and then return to this document.

CONFIGURATION

  Apache Directives

    On Debian or Ubuntu, create /etc/apache2/conf.d/stanford-webauth.conf
    with the following contents:

        WebAuthLoginURL  https://weblogin.stanford.edu/login/
        WebAuthWebKdcURL https://weblogin.stanford.edu/webkdc-service/
        WebAuthWebKdcPrincipal service/webkdc@stanford.edu

    and then run a2enmod webauth.  Depending on the Apache version, you
    may also need to run a2enmod authz_user.  That's all the custom Apache
    configuration you should need on those platforms.  It's best to put
    this configuration in a separate file rather than adding it to the
    files in /etc/apache2/mods-available, since it keeps it separate from
    the configuration that is maintained by the module package during
    upgrades.

    On Red Hat Enterprise Linux 4 or 5 (or equivalent) systems, create the
    file /etc/httpd/conf.d/stanford-webauth.conf with the same contents as
    given above.

    For other systems, such as systems where one has built Apache and
    WebAuth by hand, copy conf/stanford-webauth.conf from the WebAuth
    source tree into your Apache 2.x conf directory and then add the line:

        Include conf/stanford-webauth.conf

    in the Apache httpd.conf file.  This file assumes that the WebAuth
    module is installed in /usr/local/libexec/apache2/modules.  You will
    need to change the LoadModule line in that file if it's installed in
    some other path.  You will also need to ensure that the directory
    conf/webauth under your Apache root directory exists and is writable
    by the running web server.  That directory should be writable by the
    user and group specified in the User and Group directives in your
    httpd.conf.  This is taken care of for you on Debian, Ubutu, and Red
    Hat.

  Keytab

    To use the Stanford WebAuth service, you will need to create a keytab
    for the principal webauth/<system> where <system> is the
    fully-qualified hostname of the host.  You do this using the wallet
    program.

    First, install the wallet client on your system.  Instructions for how
    to do this are at:

        <http://itservices.stanford.edu/service/kerberos/wallet>

    Next, ensure that you are listed in NetDB as the administrator, user,
    or admin team member for the system on which you're installing
    WebAuth.  Permissions to download keytabs for systems is controlled by
    the NetDB data for that system.  (If you are installing WebAuth on a
    system that's not registered in NetDB, such as an external system used
    for Stanford purposes, but still want to use the Stanford WebAuth
    service, file a HelpSU ticket with the name of the system so that a
    wallet entry can be custom-created for it.)

    Determine the path into which the keytab should be installed on your
    system.  If you are using the Debian, Ubuntu, or Red Hat packages,
    this path should be /etc/webauth/keytab.  If you are using your own
    build of WebAuth, it should be conf/webauth/keytab under your Apache
    root.  The location is controlled by the WebAuthKeytab directive in
    the Apache configuration.

    Finally, create the keytab with wallet:

        wallet -f <path> get keytab webauth/<system>

    where <path> is the path as determined above and <system> is the
    fully-qualified name of the system.

    After installing the keytab, make sure it is readable by the user and
    group that the web server runs as.  Usually this can be done with:

        chmod 640 <path>
        chgrp apache <path>

    or whatever group is specified in the Group directive of your Apache
    configuration.

  SSL Certificate

    An SSL certificate is required to use WebAuth.  Stanford users who
    need an SSL certificate for university applications can obtain one
    for free from the university's SSL certificate vendor.  For more
    information, see:

        <https://itservices.stanford.edu/service/ssl>

    If you do not want to use an SSL certificate through this service
    or are not eligible, see the SSL Certificate section in the regular
    installation instructions for details on how to create a self-signed
    certificate.  Or, of course, you can purchase your own certificate
    separately or use an organization like cacert.org.

    If you are using the Debian or Ubuntu Apache packages, you will need
    to explicitly enable the SSL Apache module with a2enmod ssl.  You will
    then also need to configure the location of your SSL certificate and
    key file.  For Debian and Ubuntu, the best location for the
    certificate is /etc/ssl/certs, and for the key is /etc/ssl/private.
    Example configuration:

        SSLCertificateFile    /etc/ssl/certs/<hostname>.pem
        SSLCertificateKeyFile /etc/ssl/private/<hostname>.key
        SSLCipherSuite HIGH:MEDIUM:!ADH:!SSLv2:@STRENGTH
        SSLProtocol all -SSLv2

    The last two configuration lines disable weak SSL ciphers.  You can
    use similar configuration directives for other operating systems, but
    may need to change SSLCertificateFile and SSLCertificateKeyFile.
    Depending on what instructions you use to generate the certificate,
    the file extension may be .crt instead of .pem.  Conventions vary on
    how to name the public key file.

    See /usr/share/doc/apache2.2-common/README.Debian.gz for more
    information about configuring SSL on Debian and Ubuntu systems,
    including how to generate and use self-signed certificates.

    If your certificate came with intermediate CA certificates, you may
    need to save them on your system (/etc/ssl/certs is recommended for
    Debian and Ubuntu systems) and configure that file in Apache as well
    with:

        SSLCertificateChainFile /etc/ssl/certs/<chain-name>.pem

    replacing <chain-name> with something documenting the intermediate CA
    certificate chain stored in that file.  As above, this may end in .crt
    instead of .pem; Apache won't care.

  LDAP Configuration

    If you want to do more than determine the user's identity, such as use
    privgroups (workgroups) to control access to resources or obtain
    additional information about authenticated users such as their full
    name and e-mail address, you will need permissions to query the
    Stanford LDAP servers and additional configuration to enable the
    mod_webauthldap module.

    First, any access to the LDAP servers (at least for purposes relevant
    to WebAuth) requires university approval.  There are, at present, no
    exceptions.  For this approval process, see:

        <https://itservices.stanford.edu/service/directory/access/requesting>

    and follow the sidebar links.  To use workgroups to control access,
    you generally want the set of permissions called WebAuth General.  The
    principal for which you should request access is the webauth principal
    for your system that you created above in the Keytab instructions.

    Once you've been granted access, configure mod_webauthldap.  For
    Debian and Ubuntu systems, add:

        WebAuthLdapHost ldap.stanford.edu
        WebAuthLdapBase cn=people,dc=stanford,dc=edu
        WebAuthLdapAuthorizationAttribute suPrivilegeGroup

    to /etc/apache2/conf.d/stanford-webauth and run a2enmod webauthldap.
    For Red Hat Enterprise Linux 4 or 5 (or equivalent) systems, add those
    same lines to /etc/httpd/conf.d/stanford-webauth.conf.

    For other systems, such as systems where one has built Apache and
    WebAuth by hand, copy conf/stanford-ldap.conf from the WebAuth
    source tree into your Apache 2.x conf directory and then add the line:

        Include conf/stanford-ldap.conf

    in the Apache httpd.conf file.  This file assumes that the WebAuth
    module is installed in /usr/local/libexec/apache2/modules.  You will
    need to change the LoadModule line in that file if it's installed in
    some other path.  If you have moved the path to the keytab, you will
    need to also change the WebAuthLdapKeytab directive in this file.

  Multifactor (Two-Step) Authentication

    Two-step authentication is a term used internally at Stanford.  The
    WebAuth documentation instead refers to multifactor authentication.
    These are both the same thing; two-step authentication is Stanford's
    implementation of multifactor authentication.  The WebAuth
    documentation always refers to this as multifactor, so this section
    will as well for consistency.

    Multifactor authentication is a mechanism by which you can require the
    user to present more than one "factor" to be authenticated:
    "something the user knows" (a username and password) as well as
    "something the user has" (an authentication code, generated from some
    source like a smartphone).

    Protecting a resource with multifactor is as simple as setting up one
    of the WebAuthRequireInitialFactor, WebAuthRequireLOA or
    WebAuthRequireSessionFactor directive for the resource in question.
    The selected directive can be placed anywhere the Require directive
    may be used (such as within a <Location> block, a <Directory> block,
    or an .htaccess file).

   Authentication Factors

    The following authentication factors are in use at Stanford and can be
    required for access to WebAuth-protected sites:

        p       Traditional username and password authentication
        o       Some multifactor authentication method was used
        o1      Multifactor authentication with a printed list
        o2      Multifactor authentication via SMS message
        o3      Multifactor authentication using a smartphone

    The multifactor authentication mechanisms are listed in order of
    increasing security and preference.  We recommend users use the
    smartphone multifactor authentication method whenever possible.

    Two additional authentication factors are possible as session
    authentication factors, but will not appear as initial authentication
    factors:

        c       Single sign-on cookie obtained earlier that session
        k       Kerberos authentication via Negotiate-Auth

    Normally, it doesn't make sense to require either of these factors,
    but they will appear in the factor lists in environment variables.

    You will also see the following "synthetic" factors, which indicate
    other information about the user's authentication method:

        m       Two separate authentication methods used (password and code)
        rm      User could have been prompted for multifactor but wasn't

    Usually these are the factors that you'll want to require using the
    WebAuth directives rather than the more specific authentication
    factors.

   WebAuthRequireInitialFactor Directive

    When multifactor is configured with this directive, the user's
    authentication is good for the lifetime of their session, once they
    successfully log in using multifactor.

    Stanford's recommended setup is to add:

        WebAuthRequireInitialFactor rm

    to the resource that you wish to protect.  With multifactor configured
    in this way, WebAuth will only request a second factor from users who
    have set up multifactor for themselves.  It will also challenge the
    user for a second factor at random intervals rather than on every
    login.

    If you would rather require multifactor challenges every time a user
    attempts to authenticate to your site (rather than randomly requiring
    it), you may instead protect your resource with:

        WebAuthRequireInitialFactor m

    This will prevent a user who has not set up their multifactor from
    accessing the resource.

        WebAuthRequireSessionFactor

    When multifactor is configured with this directive, the user will be
    required to re-authenticate via multifactor when visiting the
    protected resource, regardless of whether the user's session already
    contains a successful and unexpired multifactor authentication.  The
    syntax for WebAuthRequireSessionFactor is identical to that of
    WebAuthRequireInitialFactor, so adding

        WebAuthRequireSessionFactor rm

    to a protected resource will randomly force users to re-authenticate
    using multifactor.  This is similar to WebAuthForceLogin, except more
    flexible.

   WebAuthRequireLOA Directive

    Level of Assurance represents the confidence that WebAuth has in the
    identity of the user currently authenticating to it and can be used
    instead of requiring initial factors.  Unless you have specific
    regulatory requirements which require you to meet a certain Level of
    Assurance (LOA), you can most likely skip this section.

    The levels of assurance that you can require to access a given
    resource range from Level 1 (little or no confidence in the asserted
    identity's validity) to Level 4 (very high confidence in the asserted
    identity's validity).  Two-step authentication at Stanford can provide
    up to an LOA of 3.  The levels used at Stanford attempt to align with
    the Level of Assurance definitions produced by NIST, with some minor
    changes for Stanford's specific circumstances.  See NIST Special
    Publication 800-63 at:

        <http://csrc.nist.gov/publications/nistpubs/800-63-1/SP-800-63-1.pdf>

    Level 1 requires almost no confidence in the asserted identity.  It
    can be achieved with password challenge and any multifactor method.
    Sponsored accounts are restricted to a maximum LOA of 1 since Stanford
    does not verify the identity of holders of sponsored accounts against
    a government-issued photo ID or similar document.  Currently, an LOA
    of 1 still requires using some form of multifactor authentication, but
    this will probably be relaxed in the future.  At present, requiring
    an LOA of 1 is equivalent to requiring an initial factor of "m",
    but using "WebAuthRequireInitialFactor m" instead is simpler and
    recommended since it's less ambiguous.

    An LOA of 2 requires a good degree of confidence that the identity as
    asserted is accurate.  This level can only be reached by using a
    multifactor mechanism in addition to the traditional password
    challenge, and the user's account cannot be sponsored.  You can
    require an LOA of 2 by including this directive:

        WebAuthRequireLOA 2

    in the block or .htaccess file protecting the indicated resource.

    An LOA of 3 requires high confidence that the identity as asserted is
    accurate.  It requires use of a cryptographic token in addition to the
    traditional password challenge.  As implemented at Stanford, this can
    only be achieved using Google Authenticator on a smartphone (iOS or
    Android) and the account cannot be sponsored.  You can require an LOA
    of 3 by including this directive:

        WebAuthRequireLOA 3

    in the block or .htaccess file protecting the indicated resource.

   Multifactor Environmental Variables

    WEBAUTH_FACTORS_INITIAL is set when the user authenticates.  It
    contains the factors the user authenticated with as a comma-separated
    list.  Please see the mod_webauth manual for information about the
    factors.

    WEBAUTH_FACTORS_SESSION contains the factors the user used to
    authenticate to this particular site (as opposed to the factors used
    to authenticate the user for the first time in this session).  It will
    be the same as WEBAUTH_FACTORS_INITIAL if the user just authenticated
    to the WebLogin server for the first time in this session; otherwise,
    it may be something weaker (such as "c", which indicates the user
    authenticated with a single sign-on cookie established earlier in that
    browser session).

TESTING

    For testing instructions, see the sections Basic Testing and RUNNING
    THE TEST SUITE in the standard install instructions.

LICENSE

    Copyright 2010, 2011, 2012, 2013
        The Board of Trustees of the Leland Stanford Junior University

    Copying and distribution of this file, with or without modification,
    are permitted in any medium without royalty provided the copyright
    notice and this notice are preserved.  This file is offered as-is,
    without any warranty.