aboutsummaryrefslogtreecommitdiff
path: root/doc/doc.RPKI.RP.rpki-rtr
diff options
context:
space:
mode:
Diffstat (limited to 'doc/doc.RPKI.RP.rpki-rtr')
-rw-r--r--doc/doc.RPKI.RP.rpki-rtr181
1 files changed, 0 insertions, 181 deletions
diff --git a/doc/doc.RPKI.RP.rpki-rtr b/doc/doc.RPKI.RP.rpki-rtr
deleted file mode 100644
index bb27ea4e..00000000
--- a/doc/doc.RPKI.RP.rpki-rtr
+++ /dev/null
@@ -1,181 +0,0 @@
-****** rpki-rtr ******
-
-rpki-rtr is an implementation of the "RPKI-router" protocol (RFC-6810).
-
-rpki-rtr depends on `rcynic` to collect and validate the RPKI data. rpki-
-rtr's's job is to serve up that data in a lightweight format suitable for
-routers that want to do prefix origin authentication.
-
-To use rpki-rtr, you need to do two things beyond just running rcynic:
-
- 1. You need to post-process `rcynic`'s output into the data files used by
- rpki-rtr. The rcynic-cron script handles this automatically, so the
- default installation should already be taking care of this for you.
- 2. You need to set up a listener for the rpki-rtr server, using the generated
- data files. The platform-specific packages for FreeBSD, Debian, and Ubuntu
- automatically set up a plain TCP listener, but you will have to do
- something on other platforms, or if you're using a transport protocol
- other than plain TCP.
-
-***** Post-processing rcynic's output *****
-
-rpki-rtr is designed to do the translation from raw RPKI data into the rpki-rtr
-protocol only once. It does this by pre-computing the answers to all the
-queries it is willing to answer for a given data set, and storing them on disk.
-rpki-rtr's cronjob command handles this computation.
-
-To set this up, add an invocation of rpki-rtr cronjob to the cron job you're
-already running to run rcynic. As mentioned above, if you're running the
-rcynic-cron script, this is already being done for you automatically, so you
-don't need to do anything. If you've written your own cron script, you'll need
-to add something like this to your script:
-
- /usr/local/bin/rpki-rtr cronjob /var/rcynic/data/authenticated /var/rcynic/
- rpki-rtr
-
-rpki-rtr cronjob needs write access to a directory where it can store pre-
-digested versions of the data it pulls from rcynic. In the example above, the
-directory /var/rcynic/rpki-rtr should be writable by the user ID that is
-executing the cron script.
-
-rpki-rtr creates a collection of data files, as well as a subdirectory in which
-each instance of rpki-rtr server can place a PF_UNIX socket file. By default,
-rpki-rtr creates these files under the directory in which you run it, but you
-can change that by specifying the target directory as a second command line
-argument, as shown above.
-
-You should make sure that rpki-rtr cronjob runs at least once before attempting
-to configure rpki-rtr server. Nothing terrible will happen if you don't do
-this, but rpki-rtr server invocations started before the first rpki-rtr cronjob
-run may behave oddly.
-
-***** Setting up the rpki-rtr server *****
-
-You need to to set up a server listener that invokes `rpki-rtr server`. What
-kind of server listener you set up depends on which network protocol you're
-using to transport this protocol. rpki-rtr is happy to run under inetd, xinetd,
-sshd, or pretty much anything -- rpki-rtr doesn't really care, it just reads
-from stdin and writes to stdout.
-
-rpki-rtr server should be run as a non-privileged user (it is read-only for a
-reason). You may want to set up a separate UNIX userid for this purpose.
-
-rpki-rtr server takes an optional argument specifying the path to its data
-directory; if you omit this argument, it uses the directory in in which you run
-it.
-
-The details of how you set up a listener for this vary depending on the network
-protocol and the operating system on which you run it. Here are three examples,
-for running under inetd on FreeBSD, under sshd, or as a free-standing server
-using rpki-rtr listener.
-
-**** Running rpki-rtr server under inetd ****
-
-Running under inetd with plain TCP is insecure and should only be done for
-testing, but you can also run it with TCP-MD5 or TCP-AO, or over IPsec. The
-inetd configuration is generally the same, the details of how you set up TCP-
-MD5, TCP-AO, or IPsec are platform specific.
-
-To run under inetd, you need to:
-
- 1. Add an entry to /etc/services defining a symbolic name for the port, if
- one doesn't exist already. At present there is no well-known port defined
- for this protocol, for this example we'll use port 42420 and the symbolic
- name rpki-rtr.
-
- Add to /etc/services:
-
- rpki-rtr 42420/tcp
-
- 1. Add the service line to /etc/inetd.conf:
-
- rpki-rtr stream tcp nowait nobody /usr/local/bin/rpki-rtr rpki-rtr server /
- var/rcynic/rpki-rtr
-
- This assumes that you want the server to run as user "nobody", which
- is generally a safe choice, or you could create a new non-priviledged
- user for this purpose. DO NOT run the server as root; it shouldn't do
- anything bad, but it's a network server that doesn't need root
- access, therefore it shouldn't have root access.
-
-**** Running rpki-rtr server under sshd ****
-
-To run rpki-rtr server under sshd, you need to:
-
- 1. Decide whether to run a new instance of sshd on a separate port or use the
- standard port. rpki-rtr doesn't care, but some people seem to think that
- it's somehow more secure to run this service on a different port. Setting
- up sshd in general is beyond the scope of this documention, but most
- likely you can copy the bulk of your configuration from the standard
- config.
- 2. Configure sshd to know about the rpki-rtr subsystem. Add something like
- this to your sshd.conf:
-
- Subsystem rpki-rtr /usr/local/bin/rpki-rtr
-
- 1. Configure the userid(s) you expect SSH clients to use to connect to the
- server. For operational use you almost certainly do NOT want this user to
- have a normal shell, instead you should configure its shell to be the
- server (/usr/local/bin/rpki-rtr or wherever you've installed it on your
- system) and its home directory to be the rpki-rtr data directory (/var/
- rcynic/rpki-rtr or whatever you're using). If you're using passwords to
- authenticate instead of ssh keys (not recommended) you will always need to
- set the password(s) here when configuring the userid(s).
- 2. Configure the .ssh/authorized_keys file for your clients; if you're using
- the example values given above, this would be /var/rcynic/rpki-rtr/.ssh/
- authorized_keys. You can have multiple SSH clients using different keys
- all logging in as the same SSH user, you just have to list all of the SSH
- keys here. You may want to consider using a command= parameter in the key
- line (see the sshd(8) man page) to lock down the SSH keys listed here so
- that they can only be used to run the rpki-rtr service.
-
- If you're running a separate sshd for this purpose, you might also
- want to add an !AuthorizedKeysFile entry pointing at this
- authorized_keys file so that the server will only use this
- authorized_keys file regardless of what other user accounts might
- exist on the machine:
-
- AuthorizedKeysFile /var/rcynic/rpki-rtr/.ssh/authorized_keys
-
- There's a sample sshd.conf in the source directory. You will have to
- modify it to suit your environment. The most important part is the
- Subsystem line, which runs the server.sh script as the "rpki-rtr"
- service, as required by the protocol specification.
-
-**** Running rpki-rtr listener ****
-
-rpki-rtr listener is a free-standing plain TCP server which just listens on a
-TCP socket then forks a child process running rpki-rtr server.
-
-All of the caveats regarding plain TCP apply to rpki-rtr listener.
-
-rpki-rtr listener takes one required argument, the TCP port number on which to
-listen; it also accepts a second argument which specifies the rcynic output
-directory, like rpki-rtr server.
-
- /usr/local/bin/rpki-rtr listener 42420 /var/rcynic/rpki-rtr
-
-**** Other transports ****
-
-You can also run this code under xinetd, or the netpipes "faucet" program, or
-stunnel...other than a few lines that might need hacking to log the connection
-peer properly, the program really doesn't care.
-
-You should, however, care whether the channel you have chosen is secure; it
-doesn't make a lot of sense to go to all the trouble of checking RPKI data then
-let the bad guys feed bad data into your routers anyway because you were
-running the rpki-rtr link over an unsecured TCP connection.
-
-***** Other commands *****
-
-rpki-rtr has two other commands which might be useful for debugging:
-
- 1. rpki-rtr client implements a dumb client program for this protocol, over
- SSH, raw TCP, or by invoking rpki-rtr server directly in a subprocess. The
- output is not expected to be useful except for debugging. Either run it
- locally where you run the cron job, or run it anywhere on the net, as in
-
- $ rpki-rtr client tcp <hostname> <port>
-
- 2. rpki-rtr show will display a text dump of pre-digested data files in the
- current directory.