In any networked environment -- even a "secure"
network 
which may not have access to an external network such
as Internet 
-- users should be trained to maintain a reasonable
level of security, 
and system administrators should install customized
security tweaks 
and audits. What follows is a list of common security
"holes" 
on networks, along with fixes that can be used to close
these holes. 
None of these fixes requires access to source code or
the ability 
to manipulate the kernel, so they are easily installable
by either 
system administrators or the user base.
The most easily breached security mechanism is an easy-to-guess
password, 
such as:
be easy to type, preferably with both hands (this reduces
the chance that someone will guess your password by
watching you log 
into the computer).
The system administrator should run periodic checks
to make sure that 
no accounts without passwords or with easily guessed
passwords are 
available. These lapses tend to occur when a new version
of the operating 
system has been released, or a third-party product has
been installed. 
Many of the third party login names and passwords have
become generally 
known and are used to break into systems. Since these
accounts typically 
have root or daemon access and privileges on the system,
they represent 
a particularly dangerous threat.
The system administrator should also perform periodic
checks for system 
use. Such a check can be accomplished by crosschecking
information 
obtained by the finger command with file dates inside
the user's 
account (since finger does not always pick up a user
who is 
connecting via an X-window system). Users who have not
logged into 
the system over a specified time frame should first
be warned and 
then, if their account shows no activity over a second
specified period, 
be deactivated. The login shell should reflect this
status and should 
provide the user information on whom to contact to regain
use of the 
account. Generally, you should use a standard group
name such as "operations" 
or "MIS" in such a message, so that you don't
wind up providing 
a systems cracker with more personal account information.
Hole #2: /etc/hosts.equiv
/etc/hosts.equiv allows a user to rsh/rcmsh onto a system
without being prompted for a password. This capability
is useful in 
an environment where users need to be able to send remote
shell commands 
without being denied because of permission. However,
much of the functionality 
of this command was transferred to the /etc/hosts.lpd
file, 
which lists those systems which are allowed to use the
host system 
as a remote print server. A "+" for the other
entry in this 
file means that you are allowing users from any system
with an account 
on your system to gain access without a password. It
also means that 
anyone who has cracked the password on one of the other
systems can 
gain access to your system. It's a good idea to restrict
access here 
to the systems in your own project group or subnet.
Hole #3: .rhosts
The .rhosts file is kept in login account. Its purpose
is to 
allow a specific user or users from another system to
log in without 
being prompted for a password. It is most commonly used
by system 
administrators who need to work on multiple systems
and need to be 
able to do their work without being prompted for a password.
For example, 
the /etc/rdump and /etc/rrestore commands are usually
used by root in conjunction with the .rhosts file found
in 
the root login directory. The possibility for abuse
arises when a 
user allows others access to his/her account in order
to share files. 
If there is a legitimate need to share files, the systems
administrator 
can accommodate it either by allowing group access to
a project's 
files or through a combination of group access and NFS-mounted
filesystems. 
The .rhosts file has also been used by a number of systems
crackers to move from system to another -- even across
multiple 
university campuses.
Hole #4: tftpd
tftpd allows the use of the trivial file transfer protocol
(tftp), which enables the user to access files across
systems 
without being prompted for a password. The user must
be able to specify 
the files, as tftp doesn't allow the user to traverse
the filesystem. 
A knowledgeable user, however, will be able to transfer
such key files 
as /etc/passwd, /.rhosts, /etc/hosts, and /etc/hosts.equiv,
to his/her own system. There are two easy ways to make
sure this doesn't 
happen: one is to turn off tftp by removing the tftp
entry from /etc/inetd.conf; the other is to move the
tftpd 
file, usually found in /usr/etc/tftpd, to tftp.old.
An alternative method is to limit the ability to use
tftp solely 
to root; in this case, though, you should be aware that
some diskless 
clients may need tftp to boot across the network.
Hole #5: /etc/exports
The /etc/exports file lists the filesystems that can
be mounted 
from a specific host system and shows which systems
can do the mounting. 
A line in the file that looks like this:
/usr/games
indicates that any system on the network may mount the
directory /usr/games. Never leave a filesystem mountable
by 
the world. A better alternative would be:
/usr/games	 -access=bigsol.cadcam.com
which allows only the system bigsol to access 
the /usr/games directory. For a directory such as /usr/man
the system administrator may want to restrict access
to read-only:
/usr/man -access=thrud.cadcam.com,ro
Hole #6: /var/adm/messages, /var/adm/wtmp, /var/adm/pacct
Many system administrators turn off system accounting
because they 
don't want to have to deal with an ever-growing set
of files. Often, 
however, these files provide the only clue that a break-in
has occurred 
-- either by having been altered or by disappearing
altogether. 
If space is at a premium on the system, it's better
to solve the problem 
through regular backup and cleaning of the administrative
files, rather 
than by turning them off.
Hole #7: setuid and setgid
A number of files on any system will have a setuid (set
user 
ID) to root. This allows any user to execute these files
with owner 
or group owner privileges. For example, /usr/ucb/rlogin
has 
setuid to root. If the system administrator were to
remove 
all setuid and setgid files from the system, users would
suddenly find themselves unable to do a remote login
to other systems 
or to send print jobs by a remote printer. Instead,
the system administrator 
should keep a list of the setuid and setgid files normally
found on the system and should search regularly for
any new files 
of this type. The find command provides an easy means
of searching 
for setuid scripts:
find / -perm 4755 -print &
or
find / -perm 4755 -print >
/home/myacct/sysadm_file &
The former will print out on the screen any files that
have a setuid; the latter will print the same information
to 
a file -- in this case, a file in the system administrator's
account.
To search for a setgid file, use:
find / -perm 6755 -print &
or
find / -perm 4755 -print >
/home/myacct/sysadm_file &
Finally, a suite of programs useful for security purposes
is available 
from CERT (Computer Emergency Response Team) under the
name "COPS" 
(Computer Oracle and Password System). If you are on
Internet, you 
can obtain this package by using the anonymous ftp server
at cert.sei.cmu.edu 
(192.88.209.5). The COPS package will check and report
on