|
Overview
TCP Wrappers has been around for
many years. 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
man tcpd.
The original code was written by
Wietse Venema at the Eindhoven University of Technology, The
Netherlands, between 1990 and 1995.
TCP Wrappers support in Secure Shell is given by
using the library libwrap, which
is a free software program library that implements generic TCP Wrapper
functionality for network service daemons to use (rather than, or in
addition to, their own host access control schemes).
To see if sshd is dynamically linked
against libwrap, or has support build-in, use the following command:
ldd /usr/sbin/sshd | grep
libwrap
libwrap.so.0 => /usr/lib/libwrap.so.0
(0x00b22000)
Logging of SSH Logins
Normally, the Port for SSH is open to the Internet
World, can pass Firewalls and is therefore a door for Hackers. TCP
Wrappers relies on the standard syslog facility to log connections,
which can be checked in /etc/syslog.conf
# The
authpriv file has restricted access.
authpriv.* /var/log/auth.log
If you look into this file with
tail -f you will be noticed, that
there are many (hopefully failed) SSH Connections. So, how to avoid this
unnecessary traffic to your system?
TCP Wrapper Configuration Files
To determine if a client machine is allowed to
connect to SSH, TCP wrappers reference the following two files, which
are commonly referred to as hosts access files:
- /etc/hosts.allow
- /etc/hosts.deny
When a client request is received by a TCP
wrapped service, it takes the following basic steps:
- The service references
/etc/hosts.allow. — The TCP wrapped
service sequentially parses the
/etc/hosts.allow file and applies the first rule specified for
that service. If it finds a matching rule, it allows the connection.
If not, it moves on to step 2.
- The service references
/etc/hosts.deny. — The TCP wrapped
service sequentially parses the /etc/hosts.deny
file. If it finds a matching rule is denies the connection. If not,
access to the service is granted.
The following are important points to consider
when using TCP wrappers to protect network services:
- Because access rules in
hosts.allow are applied first, they take precedence over rules
specified in hosts.deny. Therefore, if
access to a service is allowed in hosts.allow,
a rule denying access to that same service in
hosts.deny is ignored.
- Since the rules in each file are read from
the top down and the first matching rule for a given service is the
only one applied, the order of the rules is extremely important.
- If no rules for the service are found in
either file, or if neither file exists, access to the service is
granted.
- TCP wrapped services do not cache the rules
from the hosts access files, so any changes to
hosts.allow or hosts.deny take effect
immediately without restarting network services.
The recommended setting is to deny anything not
explicitly allowed. This is done by adding the following line in
/etc/hosts.deny
# hosts.deny
#
# This file describes the names of the hosts which are
# not allowed to use the local INET services, as decided
# by the '/usr/sbin/tcpd' server.
ALL: ALL
Then, explicitly list in
/etc/hosts.allow all hosts/domains
you want access to your machine. A recommended hosts.allow looks like:
#
hosts.allow
#
# This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the '/usr/sbin/tcpd' server.
ALL: 192.168.67.0/255.255.255.0,
193.78.135.208/255.255.255.240
|