NAME¶
tiger - UNIX Security Checker
SYNOPSIS¶
tiger [
-vthqGSH] [
-B dir] [
-l
dir|
@host] [
-w dir] [
-b dir]
[
-e|
-E] [
-c config] [
-A arch]
[
-O os] [
-R release]
DESCRIPTION¶
Tiger is a package consisting of Bourne Shell scripts, C code and data files
which is used for checking for security problems on a UNIX system. It scans
system configuration files, file systems, and user configuration files for
possible security problems and reports them. The command
tigexp(8) can
be used to obtain explanations of the problems reported by
tiger.
You can configure
tiger by adjusting the
Tiger_ variables in the
/etc/tiger/tigerrc configuration file. For each available module (see
MODULES below) there is a corresponding variable in the configuration
file that determines whether the module is run. All of the variables names
start with
Tiger_check_ and should be set equal to Y to run, or N to
skip. Other configuration variables will modify the behaviour of some modules,
and should be adjusted based on the operating system.
The
/etc/tiger/tiger.ignore configuration file defines a set of messages
that will not be presented in the report even if any of the modules generate
them. If the file exists, all the entries (line by line) are used as extended
regular expressions that are compared against each message (notice that it
will introduce some overhead which grows with the size of the file). For more
information on this mechanism read the
README.ignore document.
OPTIONS¶
- The following arguments can be used when calling the
program:
- -B tigerdir
- Specify the directory where tiger is installed. If
not specified, /usr/lib/tiger is used.
- -l logdir|@logserver
- Specify the name of the directory where tiger will
write the security report. This defaults to /var/log/tiger. The filename
of the report will be of the form 'security.report.
hostname.date.time'. If the directory begins with a @, the
name will be interpreted as a tiger logging server. Tiger logging's server
is currently a server that listens in port (tcp) 5353 on a remote host.
The tiger process will just send the results to that server using a telnet
connection.
- -w workdir
- Specify a directory to use for creating scratch files. This
defaults to /var/lib/tiger/work.
- -b bindir
- Specify the directory which contains (or will contain) the
binaries generated from the C modules. If the systems directories contain
all the binaries, they will be used directly from there. If not, then if
bindir contains the binaries, these will be used. If none are found
in either place, then an attempt will be made to compile the C code and
install the executables into bindir.
- -c tigerrc
- Specify an alternate name for the tigerrc control
file. The default is '/etc/tiger/tigerrc'.
- -e
- This option will cause explanations to be inserted into the
security report following each message. This can greatly increase the size
of the report, as explanations may appear repeatedly.
- -E
- This option indicates that a separate explanation report
should be created, with explanations for each type of message only
appearing once. The filename of the explanation report will be of the form
'explain.report. hostname.date.time'.
- -G
- Generate the signatures (MD5 hashes and file permissions)
for system binary files.
- -H
- This option will format the report into HTML creating local
links to the problem descriptions.
- -S
- This option indicates that a surface level check of the
configuration files of any diskless clients served by this machine should
be checked at the same time. The checks will not be as in depth as they
would be if run on the client itself.
- -q
- Suppress messages to be as quiet as possible, only security
messages will be shown.
- -A arch
- This option overrides the default value obtained for the
current architecture detected by the internal configuration engine to a
value defined by the user.
- -O os
- This option overrides the default value obtained for the
current operating system detected by the internal configuration engine to
a value defined by the user.
- -R release
- This option overrides the default value obtained for the
current operating system release detected by the internal configuration
engine to a value defined by the user.
Notice that changing the real values for the operating system and architecture
Tiger is running in might result in scripts being run which are not
appropriate to it, and, as a consequence, unexpected (and potentially
dangerous) errors might be generated. When executed
Tiger will show
which operating system, release and architecture thinks it is running in.
MODULES¶
Tiger is composed of a series of modules. Each of these modules check
specific security issues related to UNIX systems. The framework provided by
Tiger allows the provision of both generic modules and those specific
for the operating system the software runs in. Modules can be executed stand
alone, from cron or through the
tiger program (which will execute all
those available).
If you want to write additional modules for your system read the
README.writemodules document.
Tiger currently provides the following modules:
- check_accounts
- Checks the accounts provided in the system, looking for
disabled accounts with cron, rhosts, .forward, and valid shells.
- check_aliases
- Performs a check for mail aliases and improper
configuration.
- check_anonftp
- Determines if the anonymous FTP service is properly
configured.
- check_cron
- Validates the cron entries in the system.
- check_embedded
- Determines if embedded pathnames are configured
properly.
- check_exports
- Analyses configuration files for NFS exported filesystems
to see if access is properly restricted.
- check_group
- Checks the UNIX groups available in the system, looking for
conflicts and improper entries.
- check_inetd
- Checks the inetd configuration file: compares against
services definition, valid directory paths, non-existent binaries and
active services.
- check_known
- Looks for known intrusion signs including backdoors and
mail spools.
- check_netrc
- Checks if users's netrc files are insecurely
configured.
- check_nisplus
- Looks for wrong configuration in the NIS+ entries.
- check_passwd
- Checks the UNIX users available in the system, looking for
conflicts and improper entries.
- check_path
- Validates the binaries in user's PATHs as well as PATH
definitions used by scripts in order to determine insecure
definitions.
- check_perms
- Check filepermissions and inconsistencies.
- check_printcap
- Analyses the configuration for the printer control
file.
- check_rhosts
- Checks rhosts files in order to see if user's configuration
leaves the system open to attack.
- check_sendmail
- Checks sendmail configuration files.
check_signatures Compares binary files signatures against those
stored in the local database (provided with the program).
- check_system
- This module calls the operating system's specific modules
available at /usr/lib/tiger/systems/.
- check_apache
- Checks the Apache configuration file and reports on
generic issues which might introduce exposures or vulnerabilities in the
system.
- check_devices
- Checks for devices's permissions, warning about devices
that have world permissions.
- check_exrc
- Analyses .exrc files that are not in user's home
directories. The vi command will look for the existence of such a
file in the current directory, and so may inadvertently perform commands
that can compromise your system's security when starting vi or
ex.
- check_finddeleted
- Checks if deleted files are being used by any process in
the current system. This might be an indication of intrusion (a user
executing processes and then deleting its files) or of unpatched servers
(which, if not restarted use old library files and are still
vulnerable).
- check_ftpusers
- Analyses the system's /etc/ftpusers and determines if the
administrative users are in that file.
- check_issue
- Checks the /etc/issue and /etc/issue.net file to determine
if they contain the appropriate content (this is defined in the ISSUEFILE
and ISSUENETFILE).
- check_logfiles
- Checks for the existence of log files (wtmp, btmp, lastlog
and utmp). It will also check for proper umask settings.
- check_lilo
- Analyses configuration files for lilo and grub boot loaders
(Linux-specific).
- check_listeningprocs
- Checks for processes listening on TCP/IP sockets (servers)
in the system as well as users running them. Will warn if the user running
a server is not an authorised one or if the server is listening on all
available interfaces.
- check_passwdformat
- Checks the format of the /etc/passwd file in order to
determine inconsistencies which indicate an intrusion or
misconfiguration.
- check_patches
- Checks if patches are available for the system (i.e. new
packages). It will use autorpm or apt-get to check this (so this tools
need to be properly configured). This check is specific to Linux (RedHat
or Debian).
- check_root
- Checks if remote root login is allowed to the local
system.
- check_rootdir
- Checks the permissions for the root directory.
- check_rootkit
- Tries to find systems which have been rootkited, it does so
by looking for trojaned ls and find commands. It also
includes a wrapper to run the chkrootkit program and format the
results in Tiger's message format.
- check_single
- Checks if the system is properly configured to disallow
single-user access. This check is specific to Linux.
- check_release
- Analyses the version of the operating system and determines
if it is too out of date. This check is specific to Linux (RedHat or
Debian).
- check_runprocs
- This module will check if the processes configured in
tigerrc are running currently in the system. If any of the
processes is not running, Tiger will warn the administrator (this
acts as a lightweight software watchdog)
- check_services
- Check which services are configured in the system (usually
in /etc/services) versus the ones that should be configured (in the
provided services file)
- check_tcpd
- Tests for the existence of tcp-wrappers and changes in
their configuration it also determines which services are running wrapped
in tcp-wrappers.
- check_umask
- Check for umask setting in configuration files.
- check_xinetd
- Checks which xinetd services are enabled or disabled.
- crack_run
- Runs a local installation of the Crack program which
can be used to determine if local user passwords are easy (or not) to
guess.
- tripwire_run aide_run
integrit_run
- Wrappers for a number of integrity checkers, these programs
enhance the support of Tiger for MD5 and SHA-1 binary signatures
and file system permission checks (implemented with the the
check_perms and check_signatures scripts). You should
consider installing any of these three programs ( Tripwire,
Aide or Integrit) and use read-only locations (such as
CD-ROM) to store the hashes of the system.
- deb_checkadvisories
- This module checks against a list of stored Debian Security
Advisories in order to see if the system has any package installed whose
version might be subject to any security vulnerability
(Debian-specific).
- deb_checkmd5sums
- Compares the MD5 sums of binary files against those
provided after installation. Changes in these files might be an indication
of a compromised system (Debian-specific).
- deb_nopackfiles
- Looks for files installed in the system's directories that
are not provided by any installed Debian packages (Debian-specific).
FILES¶
- /etc/tiger/tigerrc
- Configuration file for the Tiger tool.
- /etc/tiger/cronrc
- Configuration file for the Tigercron tool.
- /var/log/tiger
- Location of the log messages generated by Tiger when
run through cron.
- /var/lib/tiger/work
- Working directory used by Tiger scripts to create
temporary files.
- /etc/tiger/tiger.ignore
- Configuration file that defines which messages generated by
modules will be ignored by Tiger and will not be presented in the
final report.
SEE ALSO¶
tigexp(8)
There are also a number of
README files that describe in detail the
behaviour of
Tiger and how it can be used to setup a host-based
intrusion detection system. These can be found in the top directory of the
sources or in
/usr/lib/tiger once it is installed (in Debian the
location of the full documentation set is
/usr/share/doc/tiger/)
BUGS¶
There are a lot more things to check.
Some places in the package are not shell meta-character or white-space safe.
You can report or read known bugs at the
http://savannah.nongnu.org/projects/tiger webpage.
For Debian-specific (known) bugs read the
/usr/share/doc/tiger/README.Debian document or the
http://bugs.debian.org/tiger webpage.
AUTHOR¶
Tiger was originally developed by a team of the Texas A&M University
Supercomputer Center, as of September 1993, the development done via the
Network Group, Computing & Information Services.
This software was written originally by Douglas Lee Schales, Dave K. Hess,
Khalid Warraich, and Dave R. Safford (circa 1993).
A
lot of changes were introduced by the ARSC team (a.k.a. the TARA team)
Liam Forbes <lforbes at arsc.edu>, Nathan Bills <bills AT
arsc.edu> and Mike Kienenberger <mkienenb at arsc.edu>, including
support for quite a number of operating systems.
Current upstream maintenance of
Tiger is being done by Javier
Fernandez-Sanguino Peña and coordinated at
http://savannah.nongnu.org/projects/tiger.
The adaptation for the GNU/Linux operating system was made by Robert L. Ziegler
<rlz at mediaone.net>
The modifications for the Debian GNU/Linux operating system have been made by
Javier Fernandez-Sanguino Peña <jfs at computer.org>, including a
number of checks for the GNU/Linux operating systems
(
check_listeningprocs) and some specific for Debian
(
deb_checkadvisories,
deb_checkmd5sums and
deb_nopackfiles).