📄 readme.5
字号:
@(#) README 1.7 96/07/06 23:06:19This is the README file for the 5th enhanced portmapper release.Description-----------This README describes a replacement portmapper that prevents theft ofNIS (YP), NFS, and other sensitive information via the portmapper. Asan option, the program supports access control in the style of the tcpwrapper (log_tcp) package.Like all portmappers, this one is intended to be started at boot time.Daemons that offer RPC services tell the portmapper on what port theylisten. Unlike the well-known services registered with the inetd, RPCnetwork port numbers may change each time the system is booted.Whenever a client wants to use an RPC service it is supposed to firstask the portmapper on what port the corresponding daemon is listening.The rpcinfo command can tell you what RPC services your system offers.As described in the features section below, the replacement portmappercan prevent undesirable client-server interactions. In some cases,better or equivalent alternatives are available: The SunOS portmap that is provided with patch id 100482-02 should close the same security holes. In addition, it provides an YPSERV daemon with its own access control list. This is better than just portmapper access control. The "securelib" shared library (eecs.nwu.edu:/pub/securelib.tar) implements access control for all kinds of (RPC) services, not just the portmapper.However, vendors still ship portmap implementations that allow anyoneto read or modify its tables and that will happily forward any requestso that it appears to come from the local system.Features--------- optional: host access control. The local host is always consideredauthorized. Access control requires the libwrap.a library that comeswith recent tcp wrapper (log_tcp) implementations.- requests to change the portmap tables are accepted only when theycome from the local system.- optional: requests to (un)register services that listen on privilegedports (port < 1024) are accepted only when the requests themselves comefrom a privileged port. This feature is optional because of older RPCimplementations.- requests that are forwarded by the portmapper will be forwardedthrough an unprivileged port.- the portmapper refuses to forward requests to rpc daemons that do (orshould) verify the origin of each request: when the portmapper forwardsa request it appears to come from the local machine. At present, theportmapper refuses to forward all RPC calls to itself, and most RPCcalls to the NFS mountd/nfsd daemons, and to the NIS daemons.- the really desperate can harden the portmapper even more by requiringthat requests to modify its tables arrive via the loopback networkinterface, instead of via the primary network interface that every hostcan talk to. The cost is high: besides changes to the portmapper, thisrequires changes to system libraries, to statically-linked rpc servers,to the kernel to disable IP source routing, and perhaps even to systemstartup procedures. Don't do this unless you're desperate. Detailsare given in the Makefile.Restrictions------------Limiting access to the portmapper does not protect you from directattacks on the rpc daemons; the main task of portmap is to maintain atable of available RPC services and of the network ports that they arelistening on. The securelib can be used to protect individual RPCdaemons, and the latest SunOS portmap+NIS fix already protects the NISdaemons and implements limited forwarding.On the other hand, even though a portmapper with access control onlymakes an attack more difficult, it still provides an excellent earlywarning system.Origin and portability----------------------The sources in this distribution are derived from code on the secondBSD networking tape, which was derived from Sun's RPCSRC 4.0 code, andfrom Sun's TIRPC (transport-independent rpc) distribution. The code compiles fine with SunOS 4.1.x, Ultrix 4.x, HP-UX 9.x, AIX 3.xand AIX 4.x, and Digital UNIX (OSF/1). See the notes in the Makefile.Solaris 2.x (and other true System V.4 clones) use a different programcalled rpcbind. I have written a replacement for that program, too.The primary achive is ftp.win.tue.nl:/pub/security/rpcbind_xx.tar.Z.Installation------------(1) Follow the instructions in the Makefile, then build the portmap andauxiliary executables.(2) Before killing the present portmap process, save the presentportmapper tables using the command: ./pmap_dump >tableIf you kill the portmap process without saving its tables you will haveto reboot the machine.Note: the information in the portmap tables is dynamic: For example, itwill be different after each reboot. On a Sun, it even changes eachtime a windowing system is started that uses the selection service.(3) Kill the running portmap process and start the new portmapprogram. Then (still as root) initialize the portmap tables with: ./pmap_set <table(4) If you get error messages of the form: "not registered: xxxx",disable the CHECK_PORT feature in the Makefile, remove pmap_check.o andrebuild the portmap program. Then proceed with step 3.If the portmapper complains that it cannot find all machine interfacesyou will have to rebuild it with -DHAS_SA_LEN set (see Makefile). Youcan test this with the "from_local" command (to build: make from_local).In order to revert to the original portmap daemon, kill off the runningone, restart the original portmapper and reload its tables using the"pmap_set" command as shown above.Access control:---------------By default, host access control is enabled. However, the host that runsthe portmapper is always considered authorized. The host access controltables are never consulted with requests from the local system itself;they are always consulted with requests from other hosts.In order to avoid deadlocks, the portmap program does not attempt tolook up the remote host name or user name, nor will it try to match NISnetgroups. The upshot of all this is that only network number patternswill work for portmap access control.Sample entries for the host access-control files are: /etc/hosts.allow: portmap: your.sub.net.number/your.sub.net.mask portmap: 255.255.255.255 0.0.0.0 /etc/hosts.deny portmap: ALL: (/some/where/safe_finger -l @%h | mail root) &The syntax of the access-control files is described in thehosts_access.5 manual page that comes with the tcp wrapper (log_tcp)sources. The safe_finger command comes with later wrapper releases.The first line in the hosts.allow file permits access from all systemswithin your own subnet. Some rpc services rely on broadcasts and willcontact your portmapper anyway; and once an intruder has access to yourlocal network segment you're already in deep trouble.The second line in the hosts.allow file may be needed if there areany PC-NFS systems on your network segment.For security reasons, the portmap process drops root privilegs afterinitialization. The access control files should therefore be readablefor group or world.Testing:--------Normally, only rejected requests will be reported via the syslogdaemon. Logging is done in a child process, in order to avoidpossible deadlock in case the logging code needs assistance fromthe portmapper.By default, the portmapper will be utterly silent. In fact, the portmapdaemon is not consulted that often. Sending a SIGINT signal to theportmap process will enable the logging of all requests. Another way to enable verbose logging is to start the daemon with the"-v" option. See above, steps (2) and later, on how to stop and restartthe portmapper without having to reboot.Warning: with some HP-UX and AIX versions, when verbose logging is on,the system fills up with zombie processes. This can be fixed bycompiling with -DIGNORE_SIGCHLD (see instructions in the Makefile).With verbose logging turned on, requests such as "ypcat" or "rpcinfo-p" should show up with log file entries such as: MMM dd hh:mm:ss hostname portmap[pid]: connect from x.x.x.x to getport(ypserv) MMM dd hh:mm:ss hostname portmap[pid]: connect from y.y.y.y to dump() Send SIGINT to the portmapper to turn the verbose logging off.Acknowledgements----------------Casper H.S. Dik (casper@fwi.uva.nl) provided valuable information onRPC security and tested an intermediate version of the portmapper withSunOS 4.1.2. Lyford D. Rich (rich@ece.nps.navy.mil) was helpful withporting the daemon to Ultrix 3.x. Lionel Cons (cons@dxcern.cern.ch)solved the HP-UX problem. Fabrice Gonton (Fabrice.Gonton@sagem.fr)figured out how to make the program work on AIX 4.1, and MichaelMatthews took care of the DEC Alpha platform. Wietse Venema (wietse@wzv.win.tue.nl) Mathematics and Computing Science Eindhoven University of Technology The Netherlands
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -