Remote Host Configuration Protocol (RHCP): The Protocol

advertisement
Remote Host Configuration Protocol:
Configuring a Remote Host in a User-Friendly Manner
Jenq-Haur Wang, Tzao-Lin Lee, Hsi-Hui Lin
Department of Computer Science and Information Engineering,
National Taiwan University,
Taipei, Taiwan, R.O.C.
E-mail: {f3506002, tl_lee, r5526069}@csie.ntu.edu.tw
Feb. 18, 1998
Abstract
Linux (or UNIX-like) system administration is mostly done in text-mode with some text-editing of system
configuration files. It requires much experience and familiarity of the whole system to configure a Linux host as an
Internet server. This paper describes a user-friendly way of configuring and managing remote hosts by incorporating
the most-popular HTML (HyperText Markup Language) [1, 2, 3, 4] as the user interface. In addition to acquiring
system-specific and server-dependent parameters on a remote host, one can easily modify these parameters without
worrying about the location and the format of configuration files. The validity of parameters is automatically
verified before real modifications are carried out. With a simple click, one can confirm and invoke these
modifications. Important messages are logged into a file and passed back to the administrator in case one may want
to monitor the situations on the remote host. Since system administration becomes so easy and convenient, a good
security policy is critical. In this paper, we’ll also propose an authentication scheme to avoid unauthorized access to
important system configurations.
Introduction
In the fast-changing world of Internet, a powerful user-friendly client attracts the attention of most of the
users since most people use the client to browse the Internet for the information they need. However, information
service providers are more important because they provide the information. Therefore, Internet servers are getting
more and more attention these days. Since the nature of servers is to serve as many clients as possible, stably and
fast enough, the platform on which servers are run is therefore quite important. In current market, Windows 95 or
NT seems to be the greatest winner since it suits most users' needs. However, in the case of servers, Windows may
not gain as much popularity. For example, in the fast-growing market of Web servers, UNIX-based ones still
dominate. Although other platforms, like Windows NT, are more widely configured as Internet servers, the
configuration and the management of the Windows NT servers are usually done via the PDC (Primary Domain
Controller) which talks to other NT servers with multiprotocols (TCP/IP, NetBEUI, and IPX). This multiprotocol
environment will naturally consume more valuable network bandwidth than pure TCP/IP environment.
In the case of UNIX, the mainstream platform for servers in campus especially, TCP/IP, the mother tongue
of the Internet, is built in the kernel from the very beginning. Since there are many dialects of UNIX, each one of
them may differ quite a lot. Linux, among others, is continuously updated and enhanced by Linus Torvalds and
many other hackers and developers around the world. Also, it’s freely available, and easy to install. With its source
code availability and extensibility, it’s very suitable for system developers to delve into the kernel and to enhance
the kernel whenever needed.
1
Linux has some disadvantages, of course. For example, system configurations are stored as text files under
various system directories, e.g. /etc. System administrator must be very familiar with each and every directory and
configuration file. Also, he needs to have good command of at least one text-editor before he can configure the host
at will. He might also need real experience with program development tools to keep everything working. Although
Linux is equipped with a GUI (Graphical User Interface): X Window System, the configuration in X Window itself
is much more difficult than the other configurations, which requires detailed knowledge of your VGA card and
monitor.
In the daily life of system administrators, the management and configuration of Internet servers is a major
job and its difficulty usually depends on the complexity of the interconnection network and the platform of the
servers. Although network related configurations on a host may be simplified by installing DHCP (Dynamic Host
Configuration Protocol) [5, 6, 7] distributions, e.g. DHCP Client Daemons and the like, the difficulty in configuring
all sorts of servers in a whole LAN (Local Area Network) may remain the same, and even harder. The administrator
must distinguish between the hosts that are assigned IP addresses and get configuration parameters via DHCP, and
those that don’t. The conflict between fixed and allocated parameters must be resolved. This is usually quite
difficult.
With the introduction of our proposed Remote Host Configuration Protocol (RHCP) instead of using Telnet
[8, 9, 10, 11], one can configure and manage a remote host with more security and ease. The security comes from
the use of an authentication scheme which will be described later. The easy part derives from the friendly user
interface and the verification process.
Configuration Process Made Simple: The User Interface
Therefore, we want to leverage the burden of system administrators by utilizing a now-popular user-interface
to configure and manage all kinds of parameters on an Internet host.
From users’ point of view, you can use your favorite web browser that supports HTML forms [1,2,3,4] and
CGI (Common Gateway Interface) [12, 13] as a Configuration Client (Client, for short). When you connect to the
Configuration Server (Server, for short), you will see an Authentication Homepage first (Fig. 1).
2
Fig. 1 The Authentication Homepage
To start the configuration process, you must somehow get an authentication key which is generated by the
Configuration Daemon (Daemon, for short) on the host to be configured (Host, for short). When you input that key
to authenticate your identity and click the ‘OK’ Button, the Server verifies and decodes that key. The Host is
determined, and the parameters are obtained from the Host and are shown (Fig. 2).
3
Fig. 2 System Parameter Configuration Page
In Fig. 2, the parameters may be divided into two parts: system-related and server-dependent parameters. For
system-related parameters, you can see hostname, IP address, subnet mask, gateway, DNS server, …etc. For
server-dependent parameters, you can see which servers are running, and the configuration of each one of them. The
server-dependent parameters may be quite different for each server. Typical settings may include port numbers,
server type (standalone or inetd super server), and maximum number of clients…etc. For example, the parameters
for HTTPD Server is shown as follows (Fig. 3):
4
Fig. 3 Server-specific parameter configuration
With the help of control elements in HTML forms, you can then modify the values of the parameters easily.
After all those modifications, you can send out the parameters to the Server with another click. Once the values of
the parameters are verified by the CGI program on the Server, you are required to confirm that modification by a
final click (Fig. 4).
5
Fig. 4 Parameter Modification Confirm Page
And the Server will actually request the Host to invoke parameter modifications. All results in the process of
parameter modifications will be passed back to the Client and shown in the browser. The procedure is illustrated as
the following: (Fig. 5)
Configuration
Server
HTTP
CGI
program
(Web Server)
Configuration
Client
RHCP/UDP
(Web Browser)
Host to be
configured
Configuration
Daemon
Fig. 5 Relationship among the key components in the Remote Host Configuration Environment
6
Relationship among the Components
In Fig. 5, we can easily see the three key components in our Remote Host Configuration Environment: the
web browser (as the Configuration Client), the web server together with a CGI program (as the Configuration
Server), and the host to be configured (with the Configuration Daemon).
In this environment, the Client actively sends requests to the Server. These requests are verified by the
Server and get delivered to the Daemon on the Host. All replies and results on the Daemon are returned to the Server,
which then passed them back to the Client. In other words, The Server is acting as the gateway to the Configuration
Daemon.
The network transport between the Client and the Server is the usual HTTP [14] above UDP (User Datagram
Protocol) [9, 10, 11, 15], while the transport between the Server and the Daemon is called RHCP (Remote Host
Configuration Protocol, to be defined later on) above UDP. Since HTTP is only used to deliver Client requests to the
Server, we’ll focus on the protocol between the Server and the Daemon: RHCP.
Remote Host Configuration Protocol (RHCP): The Protocol
In fact, it is the CGI program on the Server that communicates with the Daemon. So it plays an important
role in the configuration process. It acts as the agent for the Client and more importantly, it is the gatekeeper to make
sure that every parameter is valid. It is responsible for three kinds of Client requests: request for getting parameters,
setting parameters, and confirmation of parameter modifications (Fig. 6).
Client
CGI
get
Daemon
RHCP_GET
RHCP_ACK
set
confirm
Authenticate
& verify
RHCP_SET
RHCP_ACK, RHCP_FINAL
Fig. 6 Shows the interaction among the Client, the CGI program, and the Daemon. The message exchanges among
them are also depicted in the diagram.
In the first case, when the Client requests for getting parameters, the CGI program first decodes and checks
the authentication key to find out the identity of the Client and the Host to be configured. If the authentication
succeeds, the CGI program then sends an RHCP_GET request to the Daemon (on that Host). When the Daemon
7
replies an RHCP_ACK message with parameters attached, the CGI program passes the parameters back to the Client.
Unauthenticated Client will receive an RHCP_NAK message from the Daemon.
In the second case, when the Client asks for setting parameters, the CGI program must again decode and
check the authentication key. If it succeeds, the CGI program verifies if those parameters are valid. If so, the CGI
program writes them to a Configuration File on the Server, and asks the user for final confirmation. If parameters are
invalid, the CGI program will show an error or warning message depending on how serious the parameters go wrong.
It will either ask the user to modify parameters or let the user enforce these modifications. The client requests here
are not really sent to the Daemon until the user confirms them.
In the last case, when the user confirms this modification, the CGI program will again pass the authentication
key along with the settings in the Configuration File to the Daemon through an RHCP_SET request.
Unauthenticated modifications are not allowed, and will get an RHCP_NAK response from the Daemon. When the
Daemon is modifying the parameters, the output message produced is sent back to the CGI program simultaneously
in RHCP_ACK messages. The CGI program not only logs these messages, but also passes them back to the Client if
the user wants them. After parameter modifications are completed, the Daemon sends an RHCP_FINAL message to
the CGI program. If the Daemon still finds the modifications invalid, it will respond by an RHCP_NAK message,
and no real change to the parameters will take place.
The Configuration Daemon
As for the Daemon, it is the real program that enforces parameter reading and modification. Since it has
direct access to the configurations on the Host, a very secure authentication scheme must be enforced. As the
Daemon first starts up, it generates an authentication key that is used to identify the host it’s on and also authorizes
the administrator to access its configurations. Then it steps into ‘daemon’ mode to listen to RHCP requests.
As you can see in Fig. 6, there are only two kinds of requests for the Daemon: RHCP_GET and RHCP_SET.
In response to RHCP_GET requests, the Daemon checks for the authentication key. Unauthenticated access will get
RHCP_NAK replies. If the authentication succeeds, the Daemon will invoke parameter reading, and will pass them
back in RHCP_ACK messages.
For RHCP_SET requests, in addition to the authentication key, the Daemon also checks for parameter
validity. Unauthenticated access and invalid parameters will both get RHCP_NAK messages. If the authentication
succeeds and the parameters are valid, the Daemon then invokes real parameter modification and replies with
RHCP_ACK messages and an RHCP_FINAL message for the final parameter change. All diagnostic information
will be logged on the Daemon, and will also be passed back to the CGI program. Any change in the Host is also
logged.
The Message Format
There are five kinds of messages in RHCP: RHCP_GET, RHCP_SET, RHCP_ACK, RHCP_NAK, and
RHCP_FINAL. The format of RHCP messages is as follows (Fig. 7):
8
0
7 8
Op (1)
15 16
Reserved (1)
31
Flags (2)
Timestamp (4)
Hardware Address: Upper Half (4)
Hardware Address: Lower Half
(2)
Access times (2)
Magic Cookie for RHCP (4)
Options (n)
Fig. 7 The Format of RHCP Messages
In Fig. 7, the number in the parenthesis is the number of bytes that field occupies. ‘Op’ is a 1-byte field
denoting the type of the operation in the message. Valid values are the five message types. ‘Flags’ field is used for
additional control on the message. The authentication key is the key part concerning the security policy of this
protocol. It consists of ‘Timestamp’, ‘Hardware Address’, and number of ‘Access Times’. Although we present the
authentication key as three separate fields, in real implementation, we may encrypt these fields into a single 12-byte
field. ‘Magic Cookie’ field is used to identify RHCP messages. When RHCP messages are carrying parameters, they
are stored in the variable-length ‘Options’ field.
Differences and Interoperations between RHCP and DHCP
From the name of RHCP, one can easily think of another protocol about configuration parameters: DHCP
(Dynamic Host Configuration Protocol) [5, 6, 7]. In DHCP, the client plays an active role. It requests parameters
from DHCP servers for configuring itself. While in RHCP, the Server passively waits for RHCP Client requests. It
does not request parameters for itself. It accesses the Daemon’s parameters, and configures the host where the
Daemon is run (Fig. 8).
DHCP
Client
Request parameters
for the Client
Offer parameters
DHCP
Server
Access parameters
on the Daemon
RHCP
Server
RHCP
Daemon
Action Complete
Fig. 8 Differences between the role of DHCP and RHCP in host configuration. The circles in dashed line are the
hosts to be configured.
9
Since DHCP servers and clients are getting more and more common, we need to take into considerations the
interoperations between RHCP and DHCP (Fig. 9).
RHCP
Client
RHCP
Server
Router,
gateway,
firewall
DHCP
Client
Normal RHCP
Daemon (Fixed IP)
DHCP
Server
Fig. 9 Shows the interoperation between RHCP and DHCP
Since we can configure a normal host with fixed IP address, can we configure a host that happens to be a
DHCP client? There may be two solutions for this. For the first one, if the RHCP Daemon finds the Host to be a
DHCP client, it can prohibit users from modifying the network-related parameters, e.g. IP address, netmask,
gateway, …etc. Only server-dependent parameters are allowed to modify. For the other one, the RHCP Daemon can
also allow the users to enforce those modifications anyway. However, in this case, it will force the DHCP client to
release its lease with DHCP servers, and the client will no longer be a DHCP client. The DHCP-related
configuration will be disabled, and the host will use the new fixed IP address instead. Care must be taken since it
may also cause unwanted misconfiguration.
In fact, an RHCP server can also be a DHCP server, but that seems to add not much convenience to the
management of RHCP, and it may slow down the performance of pure RHCP servers. The only convenience may be
that: it’s able to take over the management of the DHCP leases in the DHCP client case mentioned above.
Discussion
To complicate things further, what if we want to configure a special host like a gateway, a router, or a
firewall? In these situations, special parameter settings should be available, for example, settings for two Network
Interface Cards. In RHCP, this is possible since the message format is versatile enough to handle all kinds of
parameter settings.
In previous paragraphs, our statement of RHCP is focused on Linux system administration. However, in a
typical LAN environment, with all sorts of platforms, RHCP can still configure the whole LAN. The only thing we
need to do is to write different Configuration Daemon for each platform. The other two components in RHCP, the
Configuration Client and Server, remain unchanged.
Since the parameter modification is as simple as browsing the web, authentication is very critical.
Unauthenticated access to Configuration Daemon is absolutely forbidden and will get RHCP_NAK messages.
Since the advent of DHCP, the Internet is getting more difficult to manage. Some hosts are configured as
10
DHCP clients, while others remain using fixed network addresses. If we take this into consideration, RHCP may
also need to cooperate with DHCP.
If you browse through the documents about DHCP, you may wonder why we need another protocol. We
could have utilized the same DHCP protocol, and added more message types and more DHCP options [6] for our
needs. The reason is if we did so, we could have made the situation even worse. We may need to modify existing
DHCP servers to avoid redundant DHCP messages.
In this paper, we suggest an HTML forms-CGI-based user interface for configuration control. However, this
is not required. As long as we have a Configuration Client that is capable of all the work we have mentioned for the
CGI program: to send RHCP_GET and RHCP_SET requests, to verify the validity of parameters, and to
authenticate the keys, the results will be the same (Fig. 10).
RHCP request
Configuration
Client
Configuration
Daemon
RHCP reply
Fig. 10 Shows the relationship between Configuration Components when HTML forms and CGI programs are not
employed.
Conclusion
In this paper, we suggest a user-friendly way of managing and configuring Internet servers. However, the
user interface provided by HTML and CGI programs is not the most important thing. The point is that we can
manage, configure, and even control a lot of Internet servers in the whole LAN in a uniform way. You don’t have to
stay on the console, and you don’t have to know too much tedious details of not-so-important things. The most
important is that the configuration process is automatically carried out and the changes of configurations are
carefully verified and well monitored.
With the help of RHCP, system administrators can easily and conveniently configure a remote host as well
as a local host, as long as the network is working. He can also monitor and even control the whole LAN with a
normal browser on any platform.
Reference
[1]
Dave Raggett, Arnaud Le Hors, and Ian Jacobs, “HTML 4.0 Specification”, 18 December 1997.
[2]
Dave Raggett, “HTML 3.2 Reference Specification”, 14 January 1997.
[3]
Dave Raggett, “HyperText Markup Language Specification Version 3.0”, September 1995.
[4]
T. Berners-Lee and D. Connolly, “HyperText Markup Language 2.0”, RFC 1866, November 1995.
[5]
R. Droms, “Dynamic Host Configuration Protocol”, RFC 2131, March 1997.
[6]
S. Alexander and R. Droms, “DHCP Options and BOOTP Vendor Extensions”, RFC 2132, March 1997.
[7]
R. Droms, “Interoperation between DHCP and BOOTP”, RFC 1534, October 1993.
[8]
J. B. Postel, J.K. Reynolds, “Telnet Protocol specification”, RFC 854, May 1983.
11
[9]
Douglas E. Comer, Internetworking with TCP/IP, Vol. I: Principles, Protocols, and Architectures, Second
Edition, Prentice-Hall, Inc., 1991.
[10] Douglas E. Comer, and David L. Stevens, Internetworking with TCP/IP, Vol. III: Client-Server Programming
and Applications, BSD Socket Version, Prentice-Hall, Inc., 1993.
[11] W. Richard Stevens, TCP/IP Illustrated, Vol. I: The protocols, Addison-Wesley Publishing Company, 1994.
[12] NCSA, “The Common Gateway Interface (CGI) Specification 1.1”, Internet article at
http://hoohoo.ncsa.uiuc.edu/cgi/.
[13] Shishir Gundavaram, CGI programming on the World Wide Web, O’Reilly & Associates, Inc., 1996.
[14] R. Fielding, J. Gettys, J. Mogul, H. Frystyk Nielsen, and T. Berners-Lee, "HTTP Version 1.1 ", RFC 2068,
January 1997.
[15] J. B. Postel, “User Datagram Protocol”, RFC 768, August 1980.
12
Download