 f90f055659
			
		
	
	f90f055659
	
	
	
		
			
			With this change it's possible to bootstrap a KDC using a client certificate with a PKINIT SAN for iprop/fqdn. Given such a certificate one could run ipropd-slave via kinit to pull down the initial copy of the HDB, then start the KDC services using the HDBGET: keytab. That should make bootstrapping new secondary KDCs very easy. One could bootstrap the KDC with such a certificate using, e.g., Safeboot (https://github.com/osresearch/safeboot), enrolling the host as a KDC.
		
			
				
	
	
		
			247 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			247 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\" $Id$
 | |
| .\"
 | |
| .\" Copyright (c) 2005 Kungliga Tekniska Högskolan
 | |
| .\" (Royal Institute of Technology, Stockholm, Sweden).
 | |
| .\" All rights reserved.
 | |
| .\"
 | |
| .\" Redistribution and use in source and binary forms, with or without
 | |
| .\" modification, are permitted provided that the following conditions
 | |
| .\" are met:
 | |
| .\"
 | |
| .\" 1. Redistributions of source code must retain the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer.
 | |
| .\"
 | |
| .\" 2. Redistributions in binary form must reproduce the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer in the
 | |
| .\"    documentation and/or other materials provided with the distribution.
 | |
| .\"
 | |
| .\" 3. Neither the name of the Institute nor the names of its contributors
 | |
| .\"    may be used to endorse or promote products derived from this software
 | |
| .\"    without specific prior written permission.
 | |
| .\"
 | |
| .\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
 | |
| .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | |
| .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | |
| .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
 | |
| .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | |
| .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | |
| .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | |
| .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | |
| .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | |
| .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | |
| .\" SUCH DAMAGE.
 | |
| .\"
 | |
| .Dd May 24, 2005
 | |
| .Dt IPROP 8
 | |
| .Os
 | |
| .Sh NAME
 | |
| .Nm iprop ,
 | |
| .Nm ipropd-master ,
 | |
| .Nm ipropd-slave
 | |
| .Nd propagate transactions from a Heimdal Kerberos master KDC to slave KDCs
 | |
| .Sh SYNOPSIS
 | |
| .Nm ipropd-master
 | |
| .Oo Fl c Ar string \*(Ba Xo
 | |
| .Fl Fl config-file= Ns Ar string
 | |
| .Xc
 | |
| .Oc
 | |
| .Oo Fl r Ar string \*(Ba Xo
 | |
| .Fl Fl realm= Ns Ar string
 | |
| .Xc
 | |
| .Oc
 | |
| .Oo Fl k Ar kspec \*(Ba Xo
 | |
| .Fl Fl keytab= Ns Ar kspec
 | |
| .Xc
 | |
| .Oc
 | |
| .Oo Fl d Ar file \*(Ba Xo
 | |
| .Fl Fl database= Ns Ar file
 | |
| .Xc
 | |
| .Oc
 | |
| .Op Fl Fl slave-stats-file= Ns Ar file
 | |
| .Op Fl Fl time-missing= Ns Ar time
 | |
| .Op Fl Fl time-gone= Ns Ar time
 | |
| .Op Fl Fl detach
 | |
| .Op Fl Fl version
 | |
| .Op Fl Fl help
 | |
| .Nm ipropd-slave
 | |
| .Oo Fl c Ar string \*(Ba Xo Fl Fl config-file= Ns Ar string Xc Oc
 | |
| .Oo Fl r Ar string \*(Ba Xo Fl Fl realm= Ns Ar string Xc Oc
 | |
| .Oo Fl d Ar file \*(Ba Xo Fl Fl database= Ns Ar file Xc Oc
 | |
| .Oo Fl k Ar kspec \*(Ba Xo Fl Fl keytab= Ns Ar kspec Xc Oc
 | |
| .Oo Xo Fl Fl no-keytab Xc Oc
 | |
| .Oo Xo Fl Fl cache= Ns Ar cspec Xc Oc
 | |
| .Op Fl Fl statusfile= Ns Ar file
 | |
| .Op Fl Fl hostname= Ns Ar hostname
 | |
| .Op Fl Fl port= Ns Ar port
 | |
| .Op Fl Fl time-lost= Ns Ar time
 | |
| .Op Fl Fl async-hdb
 | |
| .Op Fl Fl detach
 | |
| .Op Fl Fl version
 | |
| .Op Fl Fl help
 | |
| .Ar master
 | |
| .Sh DESCRIPTION
 | |
| .Nm ipropd-master
 | |
| is used to propagate changes to a Heimdal Kerberos database from the
 | |
| master Kerberos server on which it runs to slave Kerberos servers
 | |
| running
 | |
| .Nm ipropd-slave .
 | |
| .Pp
 | |
| The slaves are specified by the contents of the
 | |
| .Pa slaves
 | |
| file in the KDC's database directory, e.g.\&
 | |
| .Pa /var/heimdal/slaves .
 | |
| This has principals one per-line of the form
 | |
| .Dl iprop/ Ns Ar slave Ns @ Ns Ar REALM
 | |
| where
 | |
| .Ar slave
 | |
| is the hostname of the slave server in the given
 | |
| .Ar REALM ,
 | |
| e.g.\&
 | |
| .Dl iprop/kerberos-1.example.com@EXAMPLE.COM
 | |
| On a slave, the argument
 | |
| .Fa master
 | |
| specifies the hostname of the master server from which to receive updates.
 | |
| .Pp
 | |
| In contrast to
 | |
| .Xr hprop 8 ,
 | |
| which sends the whole database to the slaves regularly,
 | |
| .Nm
 | |
| normally sends only the changes as they happen on the master.
 | |
| The master keeps track of all the changes by assigning a version
 | |
| number to every transaction to the database.
 | |
| The slaves know which was the latest version they saw, and in this
 | |
| way it can be determined if they are in sync or not.
 | |
| A log of all the transactions is kept on the master.
 | |
| When a slave is at an older version than the oldest one in the log,
 | |
| the whole database has to be sent.
 | |
| .Pp
 | |
| The log of transactions is also used to implement a two-phase commit
 | |
| (with roll-forward for recovery) method of updating the HDB.
 | |
| Transactions are first recorded in the log, then in the HDB, then
 | |
| the log is updated to mark the transaction as committed.
 | |
| .Pp
 | |
| The changes are propagated over a secure channel (on port 2121 by
 | |
| default).
 | |
| This should normally be defined as
 | |
| .Dq iprop/tcp
 | |
| in
 | |
| .Pa /etc/services
 | |
| or another source of the services database.
 | |
| .Pp
 | |
| The
 | |
| .Nm ipropd-master
 | |
| and
 | |
| .Nm ipropd-slave
 | |
| programs require acceptor and initiator credentials,
 | |
| respectively, for host-based principals for the
 | |
| .Ar iprop
 | |
| service and the fully-qualified hostnames of the hosts on which
 | |
| they run.
 | |
| .Pp
 | |
| The
 | |
| .Nm ipropd-master
 | |
| program uses, by default, the HDB-backed keytab
 | |
| .Ar HDBGET: ,
 | |
| though a file-based keytab can also be specified.
 | |
| .Pp
 | |
| The
 | |
| .Nm ipropd-slave
 | |
| program uses the default keytab, which is specified by the
 | |
| .Ev KRB5_KTNAME
 | |
| environment variable, or the value of the
 | |
| .Ar default_keytab_name
 | |
| configuration parameter in the
 | |
| .Ar [libdefaults]
 | |
| section.
 | |
| However, if the
 | |
| .Fl Fl no-keytab
 | |
| option is given, then
 | |
| .Nm ipropd-slave
 | |
| will use the given or default credentials cache, and it will
 | |
| expect that cache to be kept fresh externally (such as by the
 | |
| .Nm kinit
 | |
| program).
 | |
| .Pp
 | |
| There is a keep-alive feature logged in the master's
 | |
| .Pa slave-stats
 | |
| file (e.g.\&
 | |
| .Pa /var/heimdal/slave-stats ) .
 | |
| .Pp
 | |
| Note that hierarchical replication is supported by running
 | |
| an
 | |
| .Nm ipropd-master
 | |
| on the same KDC as an
 | |
| .Nm ipropd-slave .
 | |
| .Pp
 | |
| Supported options for
 | |
| .Nm ipropd-master :
 | |
| .Bl -tag -width Ds
 | |
| .It Fl c Ar string , Fl Fl config-file= Ns Ar string
 | |
| .It Fl r Ar string , Fl Fl realm= Ns Ar string
 | |
| .It Fl k Ar kspec , Fl Fl keytab= Ns Ar kspec
 | |
| Keytab for authenticating
 | |
| .Nm ipropd-slave
 | |
| clients.
 | |
| .It Fl Fl cache= Ns Ar cspec
 | |
| If the keytab given is the empty string then credentials will be
 | |
| used from the default credentials cache, or from the
 | |
| .Ar cspec
 | |
| if given.
 | |
| .It Fl d Ar file , Fl Fl database= Ns Ar file
 | |
| Database (default per KDC)
 | |
| .It Fl Fl slave-stats-file= Ns Ar file
 | |
| File for slave status information.
 | |
| .It Fl Fl time-missing= Ns Ar time
 | |
| Time before slave is polled for presence (default 2 min).
 | |
| .It Fl Fl time-gone= Ns Ar time
 | |
| Time of inactivity after which a slave is considered gone (default 5 min).
 | |
| .It Fl Fl detach
 | |
| Detach from console.
 | |
| .It Fl Fl version
 | |
| .It Fl Fl help
 | |
| .El
 | |
| .Pp
 | |
| Supported options for
 | |
| .Nm ipropd-slave :
 | |
| .Bl -tag -width Ds
 | |
| .It Fl c Ar string , Fl Fl config-file= Ns Ar string
 | |
| .It Fl r Ar string , Fl Fl realm= Ns Ar string
 | |
| .It Fl d Ar file , Fl Fl database= Ns Ar file
 | |
| Database (default per KDC)
 | |
| .It Fl k Ar kspec , Fl Fl keytab= Ns Ar kspec
 | |
| Keytab with client credentials for authenticating to
 | |
| .Nm ipropd-master .
 | |
| .It Fl Fl status-file= Ns Ar file
 | |
| .It Fl Fl hostname= Ns Ar hostname
 | |
| Hostname for client principal if different from actual hostname.
 | |
| .It Fl Fl port= Ns Ar port
 | |
| .It Fl Fl time-lost= Ns Ar time
 | |
| time before server is considered lost (default 5 min)
 | |
| .It Fl Fl async-hdb
 | |
| Use asynchronous writes.
 | |
| This is very useful for very busy sites or sites with very large
 | |
| HDBs.
 | |
| .It Fl Fl detach
 | |
| Detach from console.
 | |
| .It Fl Fl version
 | |
| .It Fl Fl help
 | |
| .El
 | |
| Time arguments for the relevant options above may be specified in forms
 | |
| like 5 min, 300 s, or simply a number of seconds.
 | |
| .Sh FILES
 | |
| .Pa slaves ,
 | |
| .Pa slave-stats
 | |
| in the database directory.
 | |
| .Pa ipropd-master.pid ,
 | |
| .Pa ipropd-slave.pid
 | |
| in the database directory, or in the directory named by the
 | |
| .Ev HEIM_PIDFILE_DIR
 | |
| environment variable.
 | |
| .Sh SEE ALSO
 | |
| .Xr kinit 1 ,
 | |
| .Xr krb5.conf 5 ,
 | |
| .Xr hprop 8 ,
 | |
| .Xr hpropd 8 ,
 | |
| .Xr iprop-log 8 ,
 | |
| .Xr kdc 8 .
 |