You are on page 1of 2

Enabling TCP Wrappers in the Solaris 10 Operating System

First let's first provide a little background. TCP Wrappers has been around for many,
many years (see Wietse Venema's FTP archive). It is used to restrict access to TCP
services based on host name, IP address, network address, and so on. For more details on
what TCP Wrappers is and how you can use it, see tcpd(1M). TCP Wrappers was
integrated into the Solaris Operating System starting in the Solaris 9 release, where both
Solaris Secure Shell and inetd-based (streams, nowait) services were wrapped. Bonus
points are awarded to anyone who knows why UDP services are not wrapped by default.

TCP Wrappers support in Secure Shell was always enabled since Secure Shell always
called the TCP Wrapper function host_access(3) to determine if a connection attempt
should proceed. If TCP Wrappers was not configured on that system, access, by default,
would be granted. Otherwise, the rules as defined in the hosts.allow and hosts.deny files
would apply. For more information on these files, see hosts_access(4). Note that this and
all of the TCP Wrappers manual pages are stored under /usr/sfw/man in the Solaris 10 OS.
To view this manual page, you can use the following command:

$ man ­M /usr/sfw/man ­s 4 hosts_access

inetd-based services use TCP Wrappers in a different way. In the Solaris 9 OS, to enable
TCP Wrappers for inetd-based services, you must edit the /etc/default/inetd file and set
the ENABLE_TCPWRAPPERS parameter to YES. By default, TCP Wrappers was not enabled for
inetd.

In the Solaris 10 OS, two new services were wrapped: sendmail and rpcbind. sendmail 
works in a way similar to Secure Shell. It always calls the host_access function and
therefore TCP Wrappers support is always enabled. Nothing else needs to be done to
enable TCP Wrappers support for that service. On the other hand, TCP Wrappers support
for rpcbind must be enabled manually using the new Service Management Facility
(SMF). Similarly, inetd was modified to use a SMF property to control whether TCP
Wrappers is enabled for inetd-based services.

Let's look at how to enable TCP Wrappers for inetd and rpcbind.

To enable TCP Wrappers support for inetd-based services, you can simply use the
following commands:

# inetadm ­M tcp_wrappers=true
# svcadm refresh inetd

This enables TCP Wrappers for inetd-based (streams, nowait) services like telnet, rlogin,
and ftp (for example):

# inetadm ­l telnet | grep tcp_wrappers
default  tcp_wrappers=TRUE

You can see that this setting has taken effect for inetd by running the following
command:
# svcprop -p defaults inetd
defaults/tcp_wrappers boolean true

Note that you can also use the svccfg(1M) command to enable TCP Wrappers for inetd-
based services.

# svccfg ­s inetd setprop defaults/tcp_wrappers=true
# svcadm refresh inetd

Whether you use inetadm(1M) or svccfg is really a matter of preference. Note that you can
also use inetadm or svccfg to enable TCP Wrappers on a per-service basis. For example,
let's say that we wanted to enable TCP Wrappers for telnet but not for ftp. By default,
both the global and per-service settings for TCP Wrappers are disabled:

# inetadm ­p | grep tcp_wrappers
tcp_wrappers=FALSE

# inetadm ­l telnet | grep tcp_wrappers
default  tcp_wrappers=FALSE

# inetadm ­l ftp | grep tcp_wrappers
default  tcp_wrappers=FALSE

To enable TCP Wrappers for telnet, use the following command:

# inetadm ­m telnet tcp_wrappers=TRUE

Let's check out the settings again:

# inetadm ­p | grep tcp_wrappers
tcp_wrappers=FALSE

# inetadm ­l telnet | grep tcp_wrappers
         tcp_wrappers=TRUE

# inetadm ­l ftp | grep tcp_wrappers
default  tcp_wrappers=FALSE

As you can see, TCP Wrappers has been enabled for telnet but none of the other inetd-
based services. Pretty cool, eh?

You can enable TCP Wrappers support for rpcbind by running the following command:

# svccfg ­s rpc/bind setprop config/enable_tcpwrappers=true
# svcadm refresh rpc/bind

This change can be verified by running:

# svcprop ­p config/enable_tcpwrappers rpc/bind
true

That is all there is to it! Quick, easy and painless!

You might also like