1815 lines
85 KiB
Plaintext
1815 lines
85 KiB
Plaintext
-----BEGIN PGP SIGNED MESSAGE-----
|
|
|
|
==============================================================================
|
|
UNIX Computer Security Checklist (Version 1.1) Last Update 19-Dec-1995
|
|
==============================================================================
|
|
The Australian Computer Emergency Response Team has developed a checklist which
|
|
assists in removing common and known security vulnerabilities under the UNIX
|
|
Operating System. It is based around recently discovered security
|
|
vulnerabilities and other checklists which are readily available (see
|
|
references in Appendix C).
|
|
|
|
This document can be retrieved via anonymous ftp from:
|
|
ftp://ftp.auscert.org.au/pub/auscert/papers/unix_security_checklist
|
|
|
|
For information about detecting or recovering from an intrusion, see the
|
|
CERT security information document which can be retrieved via anonymous ftp
|
|
from:
|
|
ftp://ftp.auscert.org.au/pub/cert/tech_tips/security_info
|
|
|
|
It is AUSCERT's intention to continue to update this checklist. Any
|
|
comments should be directed via email to auscert@auscert.org.au. Before
|
|
using this document, ensure you have the latest version. New versions of this
|
|
checklist will be placed in the same area on the ftp server and should be
|
|
checked for periodically.
|
|
|
|
In order to make effective use of this checklist, readers will need to have
|
|
a good grasp of basic UNIX system administration concepts. Refer to C.9 and
|
|
C.10 for books on UNIX system administration.
|
|
|
|
If possible, apply this checklist to a system before attaching it to a network.
|
|
|
|
In addition, we recommend that you use the checklist on a regular basis as well
|
|
as after you install any patches or new versions of the operating system, with
|
|
consideration given to the appropriateness of each action to your particular
|
|
situation.
|
|
|
|
Command examples have been supplied for BSD-like and SVR4-like systems (see
|
|
Appendix F for operating system details and Appendix G for command details).
|
|
Full directory paths and program options may vary for different flavours of
|
|
UNIX. If in doubt, consult your vendor documentation.
|
|
|
|
For ease of use, the checklist has been organised into separate, logically
|
|
cohesive sections. All sections are important. An abbreviated version of
|
|
this checklist can be found in Appendix D.
|
|
|
|
CHECKLIST INDEX: 1.0 Patches
|
|
2.0 Network security
|
|
3.0 ftpd and anonymous ftp
|
|
4.0 Password and account security
|
|
5.0 File system security
|
|
6.0 Vendor operating system specific security
|
|
7.0 Security and the X Window System
|
|
|
|
APPENDICES: Appendix A Other AUSCERT information sources
|
|
Appendix B Useful security tools
|
|
Appendix C References
|
|
Appendix D Abbreviated Checklist
|
|
Appendix E Shell Scripts
|
|
Appendix F Table of operating systems by flavour
|
|
Appendix G List of commands by flavour
|
|
|
|
Any trademarks which appear in this document are registered to their
|
|
respective owners.
|
|
|
|
==============================================================================
|
|
1.0 Patches
|
|
==============================================================================
|
|
* Retrieve the latest patch list from your vendor and install any
|
|
patches not yet installed that are recommended for your system.
|
|
Some patches may re-enable default configurations. For this
|
|
reason, it is important to go through this checklist AFTER
|
|
installing ANY new patches or packages.
|
|
* Details on obtaining patches may be found in Section 6.
|
|
* Verify the digital signature of any signed files. Tools like PGP may
|
|
be used to sign files and to verify those signatures.
|
|
(Refer to B.15 for PGP access information).
|
|
* If no digital signature is supplied but an md5(1) checksum is supplied,
|
|
then verify the checksum information to confirm that you have retrieved
|
|
a valid copy.
|
|
(Refer to B.10 for MD5 access information).
|
|
* If only a generic sum(1) checksum is provided, then check that. Be
|
|
aware that the sum(1) checksum should not be considered secure.
|
|
|
|
==============================================================================
|
|
2.0 Network security
|
|
==============================================================================
|
|
The following is a list of features that can be used to help
|
|
prevent attacks from external sources.
|
|
|
|
2.1 Filtering
|
|
* ENSURE that ONLY those services which are required from outside your
|
|
domain are allowed through your router filters.
|
|
In particular, if the following are not required outside your
|
|
domain, then filter them out at the router.
|
|
|
|
NAME PORT PROTOCOL NAME PORT PROTOCOL
|
|
|
|
echo 7 TCP/UDP login 513 TCP
|
|
systat 11 TCP shell 514 TCP
|
|
netstat 15 TCP printer 515 TCP
|
|
bootp 67 UDP biff 512 UDP
|
|
tftp 69 UDP who 513 UDP
|
|
link 87 TCP syslog 514 UDP
|
|
supdup 95 TCP uucp 540 TCP
|
|
sunrpc 111 TCP/UDP route 520 UDP
|
|
NeWS 144 TCP openwin 2000 TCP
|
|
snmp 161 UDP NFS 2049 UDP/TCP
|
|
xdmcp 177 UDP X11 6000 to 6000+n TCP
|
|
exec 512 TCP (where n is the maximum number
|
|
of X servers you will have)
|
|
|
|
Note: Any UDP service that replies to an incoming packet may be
|
|
subject to a denial of service attack.
|
|
|
|
See CERT advisory CA-95.01 (C.8) for more details.
|
|
|
|
Filtering is difficult to implement correctly. For information on
|
|
packet filtering, please see Firewalls and Internet Security (C.6)
|
|
and Building Internet Firewalls (C.7).
|
|
|
|
2.2 "r" commands
|
|
|
|
2.2.1 If you don't NEED to use the "r" commands...
|
|
* DO disable all "r" commands (rlogin, rsh etc.) unless specifically
|
|
required.
|
|
This may increase your risk of password exposure in network
|
|
sniffer attacks, but "r" commands have been a regular source of
|
|
insecurities and attacks. Disabling them is by far the lesser of
|
|
the two evils (see 2.9.1).
|
|
|
|
2.2.2 If you must run the "r" commands...
|
|
* DO use more secure versions of the "r" commands for cases where
|
|
there is a specific need.
|
|
Wietse Venema's logdaemon package contains a more secure version
|
|
of the "r" command daemons. These versions can be configured to
|
|
consult only /etc/hosts.equiv and not $HOME/.rhosts. There is
|
|
also an option to disable the use of wildcards ('+').
|
|
Refer to B.13 for access information for the logdaemon package
|
|
* DO filter ports 512,513 and 514 (TCP) at the router if you do use any
|
|
of the "r" commands.
|
|
This will stop people outside your domain from exploiting these
|
|
commands but will not stop people inside your domain.
|
|
To do this you will need to disable these commands (see 2.2.1).
|
|
* DO use tcp_wrappers to provide greater access and logging on these
|
|
network services (see 2.12).
|
|
|
|
2.3 /etc/hosts.equiv
|
|
|
|
2.3.1 It is recommended that the following action be taken whether or not
|
|
the "r" commands are in use on your system.
|
|
* CHECK if the file /etc/hosts.equiv is required.
|
|
If you are running "r" commands, this file allows other hosts to
|
|
be trusted by your system. Programs such as rlogin can then be
|
|
used to log on to the same account name on your machine from a
|
|
trusted machine without supplying a password.
|
|
If you are not running "r" commands or you do not wish to
|
|
explicitly trust other systems, you should have no use for
|
|
this file and it should be removed. If it does not exist, it
|
|
cannot cause you any problems if any of the "r" commands are
|
|
accidentally re-enabled.
|
|
|
|
2.3.2 If you must have a /etc/hosts.equiv file
|
|
* ENSURE that you keep only a small number of TRUSTED hosts listed.
|
|
* DO use netgroups for easier management if you run NIS (also known
|
|
as YP) or NIS+.
|
|
* DO only trust hosts within your domain or under your management.
|
|
* ENSURE that you use fully qualified hostnames,
|
|
i.e., hostname.domainname.au
|
|
* ENSURE that you do NOT have a '+' entry by itself anywhere in the
|
|
file as this may allow any user access to the system.
|
|
* ENSURE that you do not use '!' or '#' in this file.
|
|
There is no comment character for this file.
|
|
* ENSURE that the first character of the file is not '-'.
|
|
Refer to the CERT advisory CA-91:12 (C.8).
|
|
* ENSURE that the permissions are set to 600.
|
|
* ENSURE that the owner is set to root.
|
|
* CHECK it again after each patch or operating system installation.
|
|
|
|
2.4 /etc/netgroup
|
|
* If you are using NIS (YP) or NIS+, DO define each netgroup to contain
|
|
only usernames or only hostnames.
|
|
All utilities parse /etc/netgroup for either hosts or
|
|
usernames, but never both. Using separate netgroups makes it
|
|
easier to remember the function of each netgroup. The added
|
|
time required to administer these extra netgroups is a small
|
|
cost in ensuring that strange permission combinations have not
|
|
left your machine in an insecure state.
|
|
Refer to the manual pages for more information.
|
|
|
|
2.5 $HOME/.rhosts
|
|
|
|
2.5.1 It is recommended that the following action be taken whether or not
|
|
the "r" commands are in use on your system.
|
|
* ENSURE that no user has a .rhosts file in their home directory.
|
|
They pose a greater security risk than /etc/hosts.equiv, as one
|
|
can be created by each user. There are some genuine needs for
|
|
these files, so hear each one on a case-by-case basis; e.g.,
|
|
running backups over a network unattended.
|
|
* DO use cron to periodically check for, report the contents of
|
|
and delete $HOME/.rhosts files. Users should be made aware that
|
|
you regularly perform this type of audit, as directed by policy.
|
|
|
|
2.5.2 If you must have such a file
|
|
* ENSURE the first character of the file is not '-'.
|
|
Refer to the CERT advisory CA-91:12 (C.8).
|
|
* ENSURE that the permissions are set to 600.
|
|
* ENSURE that the owner of the file is the account's owner.
|
|
* ENSURE that the file does NOT contain the symbol "+" on any line as
|
|
this may allow any user access to this account.
|
|
* ENSURE that usage of netgroups within .rhosts does not allow
|
|
unintended access to this account.
|
|
* ENSURE that you do not use '!' or '#' in this file.
|
|
There is no comment character for this file.
|
|
* REMEMBER that you can also use logdaemon to restrict the use of
|
|
$HOME/.rhosts (see 2.2.2).
|
|
|
|
2.6 NFS
|
|
When using NFS, you implicitly trust the security of the NFS server
|
|
to maintain the integrity of the mounted files.
|
|
* DO filter NFS traffic at the router.
|
|
Filter TCP/UDP on port 111
|
|
TCP/UDP on port 2049
|
|
This will prevent machines not on your subnet from accessing
|
|
file systems exported by your machines.
|
|
* DO apply all available patches.
|
|
NFS has had a number of security vulnerabilities.
|
|
* DO disable NFS if you do not need it.
|
|
See your vendor supplied documentation for detailed instructions.
|
|
* DO enable NFS port monitoring.
|
|
Calls to mount a file system will then be accepted from ports < 1024
|
|
only. This will provide added security in some circumstances.
|
|
See your vendor's documentation to determine whether this is an
|
|
option for your version of UNIX (see also 6.1.8 and 6.2.4).
|
|
* DO use /etc/exports or /etc/dfs/dfstab to export ONLY the file systems
|
|
you need to export.
|
|
If you aren't certain that a file system needs to be exported,
|
|
then it probably shouldn't be exported.
|
|
* DO NOT self-reference an NFS server in its own exports file.
|
|
i.e., The exports file should not export the NFS server to
|
|
itself in part or in total. In particular, ensure the NFS server
|
|
is not contained in any netgroups listed in its exports file.
|
|
* DO NOT allow the exports file to contain a 'localhost' entry.
|
|
* DO export to fully qualified hostnames only.
|
|
i.e., Use the full machine address 'machinename.domainname.au' and
|
|
do not abbreviate it to 'machinename'.
|
|
* ENSURE that export lists do not exceed 256 characters.
|
|
If you have access lists of hosts within /etc/exports, the list
|
|
should not exceed 256 characters AFTER any host name aliases have
|
|
been expanded.
|
|
Refer to the CERT Advisory CA-94:02 (C.8).
|
|
* DO run fsirand for all your file systems and rerun it periodically.
|
|
Firstly, ensure that you have installed any patches for fsirand.
|
|
Then ensure the file system is unmounted and run fsirand.
|
|
Predictable file handles assist crackers in abusing NFS.
|
|
* ENSURE that you never export file systems unintentionally to the world.
|
|
Use a -access=host.domainname.au option or equivalent in
|
|
/etc/exports.
|
|
See the manual page for "exports" or "dfstab" for further examples.
|
|
* DO export file systems read-only (-ro) whenever possible.
|
|
See the manual page for "exports" or "dfstab" for more information.
|
|
* If NIS is required in your situation, then DO use the secure option in
|
|
the exports file and mount requests (if the secure option is available).
|
|
* DO use showmount -e to see what you currently have exported.
|
|
* ENSURE that the permissions of /etc/exports are set to 644.
|
|
* ENSURE that /etc/exports is owned by root.
|
|
* ENSURE that you run a portmapper or rpcbind that does not forward
|
|
mount requests from clients.
|
|
A malicious NFS client can ask the server's portmapper daemon
|
|
to forward requests to the mount daemon. The mount daemon
|
|
processes the request as if it came directly from the portmapper.
|
|
If the file system is self-mounted this gives the client
|
|
unauthorised permissions to the file system.
|
|
Refer to section B.14 for how to obtain an alternate portmapper or
|
|
rpcbind that disallow proxy access.
|
|
Refer to the CERT Advisory 94:15 (C.8).
|
|
* REMEMBER that changes in /etc/exports will take effect only after
|
|
you run /usr/etc/exportfs or equivalent.
|
|
|
|
Note: A "web of trust" is created between hosts connected to each other via
|
|
NFS. That is, you are trusting the security of any NFS server you use.
|
|
|
|
2.7 /etc/hosts.lpd
|
|
* ENSURE that the first character of the file is not '-'.
|
|
(Refer to the CERT advisory CA-91:12 (see C.8)).
|
|
* ENSURE that the permissions on this file are set to 600.
|
|
* ENSURE that the owner is set to root.
|
|
* ENSURE that you do not use '!' or '#' in this file.
|
|
There is no comment character for this file.
|
|
|
|
2.8 Secure terminals
|
|
* This file may be called /etc/ttys, /etc/default/login or
|
|
/etc/security. See the manual pages for file format and usage
|
|
information.
|
|
* ENSURE that the secure option is removed from all entries that
|
|
don't need root login capabilities.
|
|
The secure option should be removed from console if you do not
|
|
want users to be able to reboot in single user mode.
|
|
Note: This does not affect usability of the su(1) command.
|
|
* ENSURE that this file is owned by root.
|
|
* ENSURE that the permissions on this file are 644.
|
|
|
|
2.9 Network services
|
|
|
|
2.9.1 /etc/inetd.conf
|
|
* ENSURE that the permissions on this file are set to 600.
|
|
* ENSURE that the owner is root.
|
|
* DO disable any services which you do not require.
|
|
- To do this we suggest that you comment out ALL services by
|
|
placing a "#" at the beginning of each line. Then enable
|
|
the ones you NEED by removing the "#" from the beginning
|
|
of the line. In particular, it is best to avoid "r" commands
|
|
and tftp, as they have been major sources of insecurities.
|
|
- For changes to take effect, you need to restart the inetd
|
|
process. Do this by issuing the commands in G.1. For some
|
|
systems (including AIX), these commands are not sufficient.
|
|
Refer to vendor documentation for more information.
|
|
|
|
2.9.2 Portmapper
|
|
* DO disable any non-required services that are started up in the system
|
|
startup procedures and register with the portmapper. See G.2 for a
|
|
command to help check for registered services.
|
|
|
|
2.10 Trivial ftp (tftp)
|
|
* If tftp is not needed, comment it out from the file
|
|
/etc/inetd.conf and restart the inetd process (as above).
|
|
* If required, read the AUSCERT Advisory SA-93:05 (see A.1) and follow
|
|
the recommendations.
|
|
|
|
2.11 /etc/services
|
|
* ENSURE that the permissions on this file are set to 644.
|
|
* ENSURE that the owner is root.
|
|
|
|
2.12 tcp_wrapper (also known as log_tcp)
|
|
* ENSURE that you are using this package.
|
|
- Customise and install it for your system.
|
|
- Enable PARANOID mode
|
|
- Consider running with the RFC931 option
|
|
- Deny all hosts by putting "all:all" in /etc/hosts.deny and
|
|
explicitly list trusted hosts who are allowed access to your
|
|
machine in /etc/hosts.allow.
|
|
- See the documentation supplied with this package for details
|
|
about how to do the above.
|
|
* DO wrap all TCP services that you have enabled in /etc/inetd.conf
|
|
* DO consider wrapping any udp services you have enabled. If you
|
|
wrap them, then you will have to use the nowait option in the
|
|
/etc/inetd.conf file.
|
|
* See section B.4 for instructions to obtain tcp_wrapper.
|
|
|
|
2.13 /etc/aliases
|
|
* Comment out the "decode" alias by placing a "#" at the beginning
|
|
of the line. For this change to take effect you will need to run
|
|
/usr/bin/newaliases. If you run NIS (YP), you will then need to
|
|
rebuild your maps (see G.3).
|
|
* ENSURE that all programs executable by an alias are owned by root,
|
|
have permissions 755 and are stored in a systems directory
|
|
e.g., /usr/local/bin. If smrsh is in use, program execution may be
|
|
further restricted. Refer to the smrsh documentation for more details
|
|
(see B.9).
|
|
|
|
2.14 Sendmail
|
|
* DO use the latest version of Eric Allman's sendmail 8.x (currently
|
|
8.7.3), as it currently contains no KNOWN vulnerabilities.
|
|
The latest version is available via anonymous FTP from:
|
|
ftp://ftp.auscert.org.au/pub/mirrors/ftp.cs.berkeley.edu
|
|
/ucb/sendmail
|
|
NOTE: If you don't already run Eric Allman's sendmail.8.7.*,
|
|
then it may take you some time to build, install, and
|
|
configure the system to your needs. Other sendmail(8)
|
|
configuration files may not be compatible with
|
|
sendmail(8) 8.7.x. There is some help available for
|
|
converting from SUN's sendmail: bundled with the distribution
|
|
of sendmail(8) v8.7.x is a document on converting standard
|
|
SUN configuration files to sendmail(8) v8.*. This is located
|
|
in the distribution, in the file:
|
|
contrib/converting.sun.configs
|
|
* If you use a vendor version of sendmail, ENSURE that you have
|
|
installed the latest patches as sendmail(8) has been a source of a
|
|
number of security vulnerabilities.
|
|
Refer to AUSCERT Advisories SA-93:10, AA-95.08 and AA-95.09b (A.1)
|
|
and CERT Advisories CA-94:12, CA-95:05 and CA-95:08 (C.8).
|
|
* If you require progmailer functionality then DO use smrsh (see B.9).
|
|
* If you do not require progmailer functionality then DO disable mail to
|
|
programs by setting this field to /bin/false in the sendmail
|
|
configuration file.
|
|
* ENSURE that your version of sendmail does not have the wizard
|
|
password enabled (see G.4). ENSURE that if you have a line starting
|
|
with "OW" in /etc/sendmail.cf, it only has a "*" next to it.
|
|
* DO increase sendmail(8) logging to a minimum log level of 9.
|
|
This will help detect attempted exploitation of the sendmail(8)
|
|
vulnerabilities. See G.5 for example commands.
|
|
* DO increase the level of logging provided by syslog.
|
|
Enable a minimum level of "info" for mail messages to be
|
|
logged to the console and/or the syslog file. See G.6 for
|
|
example code and instructions.
|
|
* REMEMBER that you will need to restart sendmail for any changes to take
|
|
effect. If you are running a frozen configuration file (sendmail.fc),
|
|
you will need to rebuild it before restarting sendmail(8) (see G.7).
|
|
|
|
2.15 majordomo
|
|
* ENSURE that your version is greater than 1.91.
|
|
See AUSCERT Advisory SA-94.03 (see A.1) for more details.
|
|
|
|
2.16 fingerd
|
|
* If your version of fingerd is older than than 5 November 1988, DO
|
|
replace it with a newer version.
|
|
* Finger can provide a would-be intruder with a lot of information
|
|
about your host. CONSIDER the finger information you provide and
|
|
think about reducing the content by disabling finger or by
|
|
replacing it with a version that only offers restricted information.
|
|
NOTE: other services such as rusers and netstat may give out similar
|
|
information.
|
|
* DO NOT use GNU finger v1.37 as it may allow intruders to read any file.
|
|
|
|
2.17 UUCP
|
|
* DO disable the uucp account, including the shell that it executes
|
|
for logging in, if it is not used at your site.
|
|
uucp may be shipped in a dangerous state.
|
|
* REMOVE any .rhosts file at the uucp home directory.
|
|
* ENSURE that the file L.cmds is owned by root.
|
|
* ENSURE that no uucp owned files or directories are world writable.
|
|
* ENSURE that you have assigned a different uucp login for each site
|
|
that needs uucp access to your machine.
|
|
* ENSURE that you have limited the number of commands that each uucp
|
|
login can execute to a bare minimum.
|
|
* DO consider deleting the whole uucp subsystem if it is not required.
|
|
* ENSURE there are no vendor-supplied uucp or root crontab entries.
|
|
|
|
2.18 REXD
|
|
* DO disable this service.
|
|
Comment this out in the inetd.conf file. See section 2.9.1 for
|
|
details on how to do this. rexd servers have little or no
|
|
security in their design or implementation. Intruders can exploit
|
|
this service to execute commands as any user.
|
|
|
|
2.19 World Wide Web (WWW) - httpd
|
|
* ENSURE that you are using the most recent version of the http daemon
|
|
of your choice.
|
|
* DO run the server daemon httpd as a specially created nonprivileged
|
|
user such as 'httpd'.
|
|
This way, if an intruder finds a vulnerability in the server
|
|
they will only have access privileges for this unprivileged user.
|
|
* DO NOT run the server daemon as root.
|
|
* DO NOT run the client processes as root.
|
|
* DO run httpd in a chroot(1) environment.
|
|
This sets up an alternate root directory that severely limits
|
|
access of http clients to the rest of the disk.
|
|
* For systems which do not have a chroot(1) command, use of chrootuid
|
|
(see B.16) may be of assistance.
|
|
* DO carefully go through the configuration options for your server.
|
|
* DO use the configuration options to give extra protection to
|
|
sensitive directories by turning off the 'include files' feature.
|
|
This will disallow files from these directories from being
|
|
included in HTML documents.
|
|
* DO use CGIWRAP. (See B.17)
|
|
* DO NOT run CGI (Common Gateway Interface) scripts if they are not
|
|
required.
|
|
* DO be very careful in constructing CGI programs.
|
|
These programs compute information to be returned to clients
|
|
and are often driven by input from the remote user who may be
|
|
hostile. If these programs are not carefully constructed, it may
|
|
be possible for remote users to subvert them to execute arbitrary
|
|
commands on the server system. Almost all vulnerabilities arise
|
|
from these issues.
|
|
* DO provide CGIs as statically linked binaries rather than as interpreted
|
|
scripts.
|
|
This will remove the need for a command interpreter to be
|
|
available inside the chrooted environment.
|
|
* ENSURE that the contents, permissions and ownership of files in the
|
|
cgi-bin directory are what you expect them to be (see your site security
|
|
policy document for more details).
|
|
* AVOID passing user input directly to command interpreters
|
|
such as Perl, AWK, UNIX shells or programs that allow commands
|
|
to be embedded in outgoing messages such as /usr/ucb/mail
|
|
* FILTER user input for potentially dangerous characters before
|
|
it is passed to any command interpreters.
|
|
Possibly dangerous characters include \n \r (.,/;~!)>|^&$`< .
|
|
(Refer to the CERT Advisory CA-95:04 (see C.8)).
|
|
|
|
==============================================================================
|
|
3.0 ftpd and anonymous ftp
|
|
==============================================================================
|
|
3.1 Versions
|
|
* ENSURE that you are using the most recent version of the ftp daemon
|
|
of your choice.
|
|
* DO consider installing the Washington University ftpd if you don't
|
|
already have it (see B.19).
|
|
* For BSDI systems, patch 005 should be applied to version 1.1 of the
|
|
BSD/386 software (see B.20).
|
|
|
|
3.2 Configuration
|
|
* CHECK all default configuration options on your ftp server.
|
|
* ENSURE that your ftp server does not have the SITE EXEC command
|
|
(see G.8 for command details).
|
|
* ENSURE that you have set up a file /etc/ftpusers which specifies
|
|
those users that are NOT allowed to connect to your ftpd.
|
|
This should include, as a MINIMUM, the entries: root, bin,
|
|
uucp, ingres, daemon, news, nobody and ALL vendor supplied
|
|
accounts.
|
|
|
|
3.3 Anonymous ftp only
|
|
* To ascertain whether you are running anonymous ftp, try to connect
|
|
to the localhost using anonymous ftp. Be sure to give an RFC822
|
|
compliant username as the password (see G.9).
|
|
* To disable anonymous ftp, move or delete all files in ~ftp/ and then
|
|
remove the user ftp from your password file.
|
|
* If you are running distributed passwords (e.g., NIS, NIS+) then you
|
|
will need to check the password entries served to your machine as
|
|
well as those in your local password file.
|
|
|
|
3.3.1 Configuration of your ftp server
|
|
* CHECK all default configuration options on your ftp server.
|
|
Not all versions of ftp are configurable. If you have a
|
|
configurable version of ftp (e.g., wu-ftp) then make sure that
|
|
all delete, overwrite, rename, chmod and umask options (there
|
|
may be others) are NOT allowed for guests and anonymous users.
|
|
In general, anonymous users should not have any unnecessary
|
|
privileges.
|
|
* ENSURE that you DO NOT include a command interpreter (such as a shell
|
|
or tools like perl) in ~ftp/bin, ~ftp/usr/bin, ~ftp/sbin or similar
|
|
directory configurations that can be executed by SITE EXEC
|
|
(Refer to AUSCERT advisory SA-94.01 (see A.1)).
|
|
* DO NOT keep system commands in ~ftp/bin, ~ftp/usr/bin, ~ftp/sbin
|
|
or similar directory configurations that can be executed by SITE EXEC.
|
|
It may be necessary to keep some commands, such as uncompress, in
|
|
these locations. Consider the inclusion of each command on a case
|
|
by case basis and be aware that the presence of such commands may
|
|
make it possible for local users to gain unauthorised access.
|
|
Be wary of including commands that can execute arbitrary commands.
|
|
For example, some versions of tar may allow you to execute an
|
|
arbitrary file.
|
|
(Refer to AUSCERT advisory SA-94.01 (see A.1)).
|
|
* ENSURE that you use an invalid password and user shell for the ftp
|
|
entry in the system password file and the shadow password file (if
|
|
you have one). It should look something like:
|
|
ftp:*:400:400:Anonymous FTP:/home/ftp:/bin/false
|
|
where /home/ftp is the anonymous ftp area.
|
|
* ENSURE that the permissions of the ftp home directory (~ftp/) are set
|
|
to 555 (read nowrite execute), owner set to root (NOT ftp).
|
|
* ENSURE that you DO NOT have a copy of your real /etc/passwd file
|
|
as ~ftp/etc/passwd.
|
|
Create one from scratch with permissions 444, owned by root. It
|
|
should not contain the names of any accounts in your real
|
|
password file. It should contain only root and ftp. These
|
|
should be dummy entries with disabled passwords eg:
|
|
root:*:0:0:Ftp maintainer::
|
|
ftp:*:400:400:Anonymous ftp::
|
|
The password file is used only to provide uid to username mapping for
|
|
ls(1) listings.
|
|
* ENSURE that you DO NOT have a copy of your real /etc/group file as
|
|
~ftp/etc/group.
|
|
Create one from scratch with permissions 444, owned by root.
|
|
* ENSURE the files ~ftp/.rhosts and ~ftp/.forward do not exist.
|
|
* DO set the login shell of the ftp account to a non-functional shell
|
|
such as /bin/false.
|
|
|
|
3.3.2 Permissions
|
|
* ENSURE NO files or directories are owned by the ftp account or have
|
|
the same group as the ftp account.
|
|
If they are, it may be possible for an intruder to replace them
|
|
with a trojan version.
|
|
* ENSURE that the anonymous ftp user cannot create files or directories
|
|
in ANY directory unless required (see Section 3.3.3).
|
|
* ENSURE that the anonymous ftp user can only read information in public
|
|
areas.
|
|
* ENSURE that the permissions of the ftp home directory (~ftp/) are set
|
|
to 555 (read nowrite execute), owner set to root (NOT ftp).
|
|
* ENSURE that the system subdirectories ~ftp/etc and ~ftp/bin
|
|
have the permissions 111 only, owner set to root.
|
|
* ENSURE that the permissions of files in ~ftp/bin/* have the
|
|
permissions 111 only, owner set to root.
|
|
* ENSURE that the permissions of files in ~ftp/etc/* are set to
|
|
444, owner set to root.
|
|
* ENSURE that there is a mail alias for ftp to avoid mail bounces.
|
|
* ENSURE /usr/spool/mail/ftp is owned by root with permissions 400.
|
|
|
|
3.3.3 Writable directories
|
|
* ENSURE that you don't have any writable directories.
|
|
It is safest not to have any writable directories. If you do
|
|
have any, we recommend that you limit the number to one.
|
|
* ENSURE that writable directories are not also readable.
|
|
Directories that are both writable and readable may be used
|
|
in an unauthorised manner.
|
|
* ENSURE that any writable directories are owned by root and have
|
|
permissions 1733.
|
|
* DO put writable directories on a separate partition if possible.
|
|
This will help to prevent denial of service attacks.
|
|
* DO read Anonymous FTP Configuration Guidelines (see B.21).
|
|
|
|
3.3.4 Disk mounting
|
|
* NEVER mount disks from other machines to the ~ftp hierarchy
|
|
unless they are set read-only in the mount command.
|
|
|
|
==============================================================================
|
|
4.0 Password and account security
|
|
==============================================================================
|
|
This section of the checklist can be incorporated as part of a
|
|
password and account usage policy.
|
|
|
|
4.1 Policy
|
|
* ENSURE that you have a password policy for your site.
|
|
See the AUSCERT Advisory SA-93.04 (see A.1).
|
|
* ENSURE you have a User Registration Form for each user on each
|
|
system. Make sure that this form includes a section that the
|
|
intending applicant signs, stating that they have read your account
|
|
usage policy and what the consequences are if they misuse their
|
|
account.
|
|
|
|
4.2 Proactive Checking
|
|
* DO use anlpasswd to proactively screen passwords as they are entered.
|
|
This program runs a series of checks on passwords when they are
|
|
set, which assists in avoiding poor passwords. It works with
|
|
normal, shadow and NIS (or yp) password systems.
|
|
(Refer to section B.3 for how to obtain it).
|
|
* DO check passwords periodically with Crack.
|
|
(Refer to section B.1 for how to obtain Crack).
|
|
* DO apply password ageing (if possible).
|
|
|
|
4.3 NIS, NIS+ and /etc/passwd entries
|
|
* DO NOT run NIS or NIS+ if you don't really need it.
|
|
* If NIS functionality is required, DO use NIS+ if possible.
|
|
* ENSURE that the only machines that have a '+' entry in the /etc/passwd
|
|
files are NIS (YP) clients; i.e., NOT the NIS master server!
|
|
There appears to be conflicting documentation and
|
|
implementations regarding the '+' entry format and so a
|
|
generic solution is not available here. It would be best to
|
|
consult your vendor's documentation.
|
|
Some of the available documentation suggests placing a '*' in
|
|
the password field, which is NOT consistent across all
|
|
implementations of NIS. We recommend testing your systems on a
|
|
case-by-case basis to see if they correctly implement the '*'
|
|
in the password field.
|
|
See G.10 for instructions.
|
|
* ENSURE that /etc/rc.local or the equivalent startup procedure is set up
|
|
to start ypbind with the -s option.
|
|
This may not be applicable on all systems. Check your
|
|
documentation.
|
|
* DO use secure RPC.
|
|
|
|
4.4 Password shadowing
|
|
* DO enable vendor supplied password shadowing or a third party
|
|
product.
|
|
Password shadowing restricts access to users' encrypted passwords.
|
|
* DO periodically audit your password and shadow password files
|
|
for unauthorised additions or inconsistencies.
|
|
|
|
4.5 Administration
|
|
* ENSURE that you regularly audit your system for dormant accounts
|
|
and disable any that have not been used for a specified period,
|
|
say 3 months. Send out account renewal notices by post and delete
|
|
any accounts of users that do not reply.
|
|
[NOTE: Do not email renewal notices because any accounts being used
|
|
illegitimately will reply as expected and hence will not be discovered]
|
|
* ENSURE that all accounts have passwords. Check shadow or NIS passwords
|
|
too, if you have them.
|
|
i.e., the password field is not empty.
|
|
* ENSURE that any user area is adequately backed up and archived.
|
|
* DO regularly monitor logs for successful and unsuccessful su(1)
|
|
attempts.
|
|
* DO regularly check for repeated login failures.
|
|
* DO regularly check for LOGIN REFUSED messages.
|
|
* Consider quotas on user accounts if you do not have them.
|
|
* Consider requiring that users physically identify themselves before
|
|
granting any requests regarding accounts (e.g., before creating a
|
|
user account).
|
|
|
|
4.6 Special accounts
|
|
* ENSURE that there are no shared accounts other than root in accordance
|
|
with site security policy.
|
|
i.e., more than one person should not know the password to an
|
|
account.
|
|
* Disable guest accounts.
|
|
Better yet, do not create guest accounts!
|
|
[NOTE: Some systems come preconfigured with guest accounts]
|
|
* DO use special groups (such as the "wheel" group under SunOS) to
|
|
restrict which users can use su to become root.
|
|
* DISABLE ALL default vendor accounts shipped with the Operating System.
|
|
This should be checked after each upgrade or installation.
|
|
* DO Disable accounts that have no password which execute a command, for
|
|
example "sync".
|
|
Delete or change ownership of any files owned by these
|
|
accounts. Ensure that these accounts do not have any cron or
|
|
at jobs. It is best to remove these accounts entirely.
|
|
* DO assign non-functional shells (such as /bin/false) to system
|
|
accounts such as bin and daemon and to the sync account if it is
|
|
not needed.
|
|
* DO put system accounts in the /etc/ftpusers file so they cannot use
|
|
ftp.
|
|
This should include, as a MINIMUM, the entries: root, bin,
|
|
uucp, ingres, daemon, news, nobody and ALL vendor supplied
|
|
accounts.
|
|
|
|
4.7 Root account
|
|
* DO restrict the number of people who know the root password.
|
|
These should be the same users registered with groupid 0
|
|
(e.g., wheel group on SunOS). Typically this is limited to at most
|
|
3 or 4 people.
|
|
* DO NOT log in as root over the network, in accordance with site
|
|
security policy.
|
|
* DO su from user accounts rather than logging in as root.
|
|
This provides greater accountability.
|
|
* ENSURE root does not have a ~/.rhosts file.
|
|
* ENSURE "." is not in root's search path.
|
|
* ENSURE root's login files do not source any other files not
|
|
owned by root or which are group or world writable.
|
|
* ENSURE root cron job files do not source any other files not
|
|
owned by root or which are group or world writable.
|
|
* DO use absolute path names when root.
|
|
e.g., /bin/su, /bin/find, /bin/passwd. This is to stop the
|
|
possibility of root accidentally executing a trojan horse. To
|
|
execute commands in the current directory, root should prefix
|
|
the command with "./", e.g., ./command.
|
|
|
|
4.8 .netrc files
|
|
* DO NOT use .netrc files unless it is absolutely necessary.
|
|
* If .netrc files must be used, DO NOT store password information in
|
|
them.
|
|
|
|
4.9 GCOS field
|
|
* DO include information in the GCOS field of the password file which
|
|
can be used to identify your site if the password file is stolen.
|
|
e.g., joe:*:10:10:Joe Bloggs, Organisation X:/home/joe:/bin/sh
|
|
|
|
==============================================================================
|
|
5.0 File system security
|
|
==============================================================================
|
|
5.1 General
|
|
* ENSURE that there are no .exrc files on your system that have
|
|
no legitimate purpose.
|
|
* DO consider using the EXINIT environment variable to disable .exrc
|
|
file functionality.
|
|
These files may inadvertently perform commands that may compromise
|
|
the security of your system if you happen to start either vi(1) or
|
|
ex(1) in a directory which contains such a file.
|
|
See G.11 for example commands to find .exrc files.
|
|
* ENSURE that any .forward files in user home directories do not
|
|
execute an unauthorised command or program.
|
|
The mailer may be fooled into allowing a normal user privileged
|
|
access. Authorised programs may be restricted through use of
|
|
smrsh (see B.9).
|
|
See G.12 for example commands to find .forward files.
|
|
(Refer to AUSCERT Advisory SA-93.10 (see A.1)).
|
|
|
|
5.2 Startup and shutdown scripts
|
|
* ENSURE startup and shutdown scripts do not chmod 666 motd.
|
|
This allows users to change system message for the day.
|
|
* ENSURE that the line "rm -f /tmp/t1" (or similar) exists in a startup
|
|
script to clean up the temporary file used to create /etc/motd. This
|
|
should occur BEFORE the code to startup the local daemons.
|
|
|
|
5.3 /usr/lib/expreserve
|
|
* DO replace versions of /usr/lib/expreserve prior to July 1993
|
|
with a recommended patch from your vendor.
|
|
If this is not possible, then remove execute permission on
|
|
/usr/lib/expreserve (see G.13).
|
|
This will mean that users who edit their files with either vi(1)
|
|
or ex(1) and have their sessions interrupted, will not be able to
|
|
recover their lost work. If you implement the above
|
|
workaround, please advise your users to regularly save their
|
|
editing sessions.
|
|
(Refer to the CERT advisory CA-93:09 for advice on fixing this
|
|
problem for the SunOS and Solaris environments).
|
|
|
|
5.4 External file systems/devices
|
|
* DO mount file systems non-setuid and read-only where practical.
|
|
(Refer to section 2.6)
|
|
|
|
5.5 File Permissions
|
|
* ENSURE that the permissions of /etc/utmp are set to 644.
|
|
* ENSURE that the permissions of /etc/sm and /etc/sm.bak are set to 2755.
|
|
* ENSURE that the permissions of /etc/state are set to 644.
|
|
* ENSURE that the permissions of /etc/motd and /etc/mtab are set to 644.
|
|
* ENSURE that the permissions of /etc/syslog.pid are set to 644.
|
|
[NOTE: this may be reset each time you restart syslog.]
|
|
* DO consider removing read access to files that users do not need to
|
|
access.
|
|
* ENSURE that the kernel (e.g., /vmunix) is owned by root, has group set
|
|
to 0 (wheel on SunOS) and permissions set to 644.
|
|
* ENSURE that /etc, /usr/etc, /bin, /usr/bin, /sbin, /usr/sbin, /tmp and
|
|
/var/tmp are owned by root and that the sticky-bit is set on /tmp and on
|
|
/var/tmp (see G.14). Refer to the AUSCERT Advisory AA-95:05 (see A.1).
|
|
* ENSURE that there are no unexpected world writable files or
|
|
directories on your system.
|
|
See G.15 for example commands to find group and world writable files
|
|
and directories.
|
|
* CHECK that files which have the SUID or SGID bit enabled, should have
|
|
it enabled (see G.16).
|
|
* ENSURE the umask value for each user is set to something sensible
|
|
like 027 or 077.
|
|
(Refer to section E.1 for a shell script to check this).
|
|
* ENSURE all files in /dev are special files.
|
|
Special files are identified with a letter in the first position of
|
|
the permissions bits. See G.17 for a command to find files in
|
|
/dev which are not special files or directories.
|
|
Note: Some systems have directories and a shell script in /dev which
|
|
may be legitimate. Please check the manual pages for more
|
|
information.
|
|
* ENSURE that there are no unexpected special files outside /dev.
|
|
See G.18 for a command to find any block special or character
|
|
special files.
|
|
|
|
5.6 Files run by root
|
|
AUSCERT recommends that anything run by root should be owned by
|
|
root, should not be world or group writable and should be located
|
|
in a directory where every directory in the path is owned by root
|
|
and is not group or world writable.
|
|
* CHECK the contents of the following files for the root account.
|
|
Any programs or scripts referenced in these files should meet
|
|
the above requirements:
|
|
- ~/.login, ~/.profile and similar login initialisation files
|
|
- ~/.exrc and similar program initialisation files
|
|
- ~/.logout and similar session cleanup files
|
|
- crontab and at entries
|
|
- files on NFS partitions
|
|
- /etc/rc* and similar system startup and shutdown files
|
|
* If any programs or scripts referenced in these files source further
|
|
programs or scripts they also need to be verified.
|
|
|
|
5.7 Bin ownership
|
|
Many systems ship files and directories owned by bin (or sys). This
|
|
varies from system to system and may have serious security implications.
|
|
* CHANGE all non-setuid files and all non-setgid files and directories
|
|
that are world readable but not world or group writable and that are
|
|
owned by bin to ownership of root, with group id 0 (wheel group under
|
|
SunOS 4.1.x).
|
|
- Please note that under Solaris 2.x changing ownership of system
|
|
files can cause warning messages during installation of patches
|
|
and system packages.
|
|
- Anything else should be verified with the vendor.
|
|
|
|
5.8 Tiger/COPS
|
|
* Do run one or both of these.
|
|
Many of the checks in this section can be automated by using
|
|
these programs.
|
|
* To obtain these programs, see B.2.
|
|
|
|
5.9 Tripwire
|
|
* DO run statically linked binary
|
|
* DO store the binary, the database and the configuration file on
|
|
hardware write-protected media.
|
|
* To obtain this program, see B.5.
|
|
|
|
==============================================================================
|
|
6.0 Vendor operating system specific security
|
|
==============================================================================
|
|
The following is a list of security issues that relate to specific
|
|
UNIX operating systems. This is not necessarily a complete list
|
|
of available UNIX types or of problems for those that are listed.
|
|
|
|
6.1 SunOS 4.1.x
|
|
|
|
6.1.1 Patches
|
|
* DO regularly ask your vendor for a complete list of patches. Sun
|
|
regularly updates a list of recommended and security patches, which
|
|
is available from:
|
|
ftp://ftp.auscert.org.au/pub/mirrors/sunsolve1.sun.com/*
|
|
or
|
|
ftp://sunsolve1.sun.com/pub/patches/*
|
|
|
|
6.1.2 IP forwarding and source routing
|
|
This is particularly relevant if you are using your SUN box as a bastion
|
|
host or duel homed system.
|
|
* ENSURE IP forwarding is disabled.
|
|
You will need the following line in the kernel configuration
|
|
file:
|
|
options "IPFORWARDING=-1"
|
|
For information on how to customise a kernel, see the file:
|
|
/usr/sys/`arch`/conf/README
|
|
* DO also consider disabling source routing.
|
|
Leaving source routing enabled may allow unauthorised traffic
|
|
through. Unfortunately there is no official method or patch
|
|
for turning source routing off. There is however an
|
|
unsupported patch. It is available via anonymous ftp from
|
|
ftp://ftp.auscert.org.au/pub/mirrors/ftp.greatcircle.com/v03.n153.Z
|
|
|
|
6.1.3 Framebuffers /dev/fb
|
|
If somebody can log in to your Sun workstation from a remote source, they
|
|
can read the contents of your Framebuffer, which is /dev/fb. Sun provides
|
|
a mechanism which allows the user logging in on the console to have
|
|
exclusive access to the Framebuffer, by using the file /etc/fbtab.
|
|
A sample /etc/fbtab file:
|
|
#
|
|
# File: /etc/fbtab
|
|
# Purpose: Specifies that upon login to /dev/console, the
|
|
# owner, group and permissions of all supported
|
|
# devices, including the framebuffer, will be set to
|
|
# the user's username, the user's group and 0600.
|
|
# Comments: SunOS specific.
|
|
# Note: You cannot use \ to continue a line.
|
|
#
|
|
# Format:
|
|
# Device Permission Colon separated device list.
|
|
#
|
|
/dev/console 0600 /dev/fb
|
|
/dev/console 0600 /dev/bwone0:/dev/bwtwo0
|
|
/dev/console 0600 /dev/cgone0:/dev/cgtwo0:/dev/cgthree0
|
|
/dev/console 0600 /dev/cgfour0:/dev/cgsix0:/dev/cgeight0
|
|
/dev/console 0600 /dev/cgnine0:/dev/cgtwelve0
|
|
#
|
|
/dev/console 0600 /dev/kb:/dev/mouse
|
|
/dev/console 0600 /dev/fd0c:/dev/rfd0c
|
|
After the above file has been created, reboot your machine, or log out
|
|
fully, then log back in again.
|
|
Read the man page for fbtab(5) for more information.
|
|
* The login replacement from Wietse Venema's logdaemon package
|
|
supports a similar feature.
|
|
(Refer to B.13 for information on how to retrieve the logdaemon
|
|
package)
|
|
|
|
6.1.4 /usr/kvm/sys/*
|
|
* ENSURE all files and directories under /usr/kvm/sys/ are not
|
|
writable by group.
|
|
In SunOS 4.1.4 the default mode is 2775 with group staff,
|
|
allowing users in group staff to trojan the kernel.
|
|
|
|
6.1.5 /usr/kvm/crash
|
|
* REMOVE setgid privileges on /usr/kvm/crash with the command:
|
|
# /bin/chmod g-s /usr/kvm/crash
|
|
A group of kmem allows users to read the virtual memory of a
|
|
running system.
|
|
|
|
6.1.6 /dev/nit (Network Interface Tap)
|
|
* DO run the CERT tool cpm to check if your system is running in
|
|
promiscuous mode.
|
|
For access details for cpm see B.6.
|
|
* DO disable the /dev/nit interface if you do not need to run in
|
|
promiscuous mode.
|
|
- For SunOS 4.x and Solbourne systems, the promiscuous interface
|
|
to the network can be eliminated by removing the /dev/nit
|
|
capability from the kernel. Once the procedure is complete, you
|
|
may remove the device file /dev/nit since it is no longer
|
|
functional.
|
|
- Apply "method 1" as outlined in the System and Network
|
|
Administration manual, in the section, "Sun System
|
|
Administration Procedures," Chapter 9, "Reconfiguring the
|
|
System Kernel." Excerpts from the method are reproduced below:
|
|
# cd /usr/kvm/sys/sun[3,3x,4,4c]/conf
|
|
# cp CONFIG_FILE SYS_NAME
|
|
[NOTE: that at this step, you should replace the CONFIG_FILE
|
|
with your system specific configuration file if one exists.]
|
|
|
|
# chmod +w SYS_NAME
|
|
# vi SYS_NAME
|
|
#
|
|
# The following are for streams NIT support. NIT is used by
|
|
# etherfind, traffic, rarpd, and ndbootd. As a rule of thumb,
|
|
# NIT is almost always needed on a server and almost never
|
|
# needed on a diskless client.
|
|
#
|
|
pseudo-device snit # streams NIT
|
|
pseudo-device pf # packet filter
|
|
pseudo-device nbuf # NIT buffering module
|
|
|
|
[Comment out the 3 "pseudo-device" lines; save and exit the
|
|
editor before proceeding.]
|
|
|
|
# config SYS_NAME
|
|
# cd ../SYS_NAME
|
|
# make
|
|
# mv /vmunix /vmunix.old
|
|
# cp vmunix /vmunix
|
|
# /etc/halt
|
|
> b
|
|
|
|
[This step will reboot the system with the new kernel.]
|
|
[NOTE: that even after the new kernel is installed, you need to
|
|
take care to ensure that the previous vmunix.old , or other
|
|
kernel, is not used to reboot the system.]
|
|
See CERT Advisory CA_94.01 (see C.8)
|
|
|
|
6.1.7 Loadable drivers option
|
|
* DO remove the option for loadable modules from the kernel.
|
|
This will mean that a rebuild of the kernel and a reboot will be
|
|
necessary in order to load any additional kernel modules and
|
|
intruders will be prevented from being able to load extra kernel
|
|
modules dynamically. To remove this option, comment out the line
|
|
options VDDRV # loadable modules
|
|
from the kernel configuration file and re-compile the kernel.
|
|
NOTE: Some software may expect to be able to load additional modules
|
|
such as device drivers.
|
|
NOTE: Even after the new kernel is installed, you need to take care
|
|
to ensure that the previous vmunix.old , or other kernel, is
|
|
not used to reboot the system.
|
|
|
|
6.1.8 NFS port monitoring
|
|
* DO enable NFS port monitoring (see also section 2.6).
|
|
Add the following commands to /etc/rc.local:
|
|
/bin/echo "nfs_portmon/W1" | /bin/adb -w /vmunix /dev/kmem > \
|
|
/dev/null 2>&1
|
|
rpc.mountd
|
|
|
|
6.2 Solaris 2.x
|
|
|
|
6.2.1 Patches
|
|
* DO regularly ask your vendor for a complete list of patches. Sun
|
|
regularly updates a list of recommended and security patches, which
|
|
is available from:
|
|
ftp://ftp.auscert.org.au/pub/mirrors/sunsolve1.sun.com/*
|
|
or
|
|
ftp://sunsolve1.sun.com/pub/patches/*
|
|
|
|
6.2.2 IP forwarding and source routing
|
|
This is particularly relevant if you are using your SUN box as a bastion
|
|
host or duel homed system.
|
|
* DO disable IP forwarding and source routing.
|
|
To do this you will need to edit the file /etc/rc.2.d/S69.inet
|
|
and set the options ip_forwarding and ip_ip_forward_src_routed
|
|
to zero as illustrated below:
|
|
ndd -set /dev/ip ip_forwarding 0
|
|
ndd -set /dev/ip ip_ip_forward_src_routed 0
|
|
For the changes to take effect you will then need to reboot.
|
|
|
|
6.2.3 Framebuffers /dev/fbs
|
|
* Solaris versions 2.3 and above have a protection facility for
|
|
framebuffers which is a superset of the functionality provided
|
|
by /etc/fbtab in SunOS 4.1.x.
|
|
* Under Solaris, /dev/fbs is a directory that contains links to
|
|
the framebuffer devices. The /etc/logindevperm file contains
|
|
information that is used by login(1) and ttymon(1M) to change
|
|
the owner, group, and permissions of devices upon logging into
|
|
or out of a console device. By default, this file contains
|
|
lines for the keyboard, mouse, audio, and frame buffer devices.
|
|
|
|
A sample /etc/logindevperm file:
|
|
#
|
|
# File: /etc/logindevperm
|
|
# Purpose: Specifies that upon login to /dev/console, the
|
|
# owner, group and permissions of all supported
|
|
# devices, including the framebuffer, will be set to
|
|
# the user's username, the user's group and 0600.
|
|
# Comments: SunOS specific.
|
|
# Note: You cannot use \ to continue a line.
|
|
#
|
|
# Format:
|
|
# Device Permission Colon separated device list.
|
|
#
|
|
/dev/console 0600 /dev/kbd:/dev/mouse
|
|
/dev/console 0600 /dev/sound/* # audio devices
|
|
/dev/console 0600 /dev/fbs/* # frame buffers
|
|
|
|
Read the man page for logindevperm(4) for more information.
|
|
|
|
6.2.4 NFS port monitoring
|
|
* DO enable NFS port monitoring.
|
|
To do this add the following lines to /etc/system:
|
|
set nfs:nfs_portmon = 1
|
|
or in Solaris version 2.5
|
|
set nfssrv:nfs_portmon = 1
|
|
* See also section 2.6.
|
|
|
|
6.3 IRIX
|
|
* DO regularly ask your vendor for a complete list of patches.
|
|
* Some IRIX patches are available via anonymous ftp from:
|
|
ftp://ftp.auscert.org.au/pub/mirrors/ftp.sgi.com/security/*
|
|
or
|
|
ftp://ftp.auscert.org.au/pub/mirrors/sgigate.sgi.com/*
|
|
* DO read the FAQ on IRIX security.
|
|
A copy can be obtained via anonymous ftp from
|
|
ftp://ftp.auscert.org.au/pub/mirrors/ftp.uu.net/sgi/security.Z
|
|
* For systems which do not have the chroot(1) command, use of
|
|
chrootuid (see B.16) may be of assistance.
|
|
* DO use the software tool rscan.
|
|
It checks for many common IRIX-specific security vulnerabilities
|
|
and problems. (Refer to B.11 for information on where to
|
|
get a copy of rscan)
|
|
|
|
6.4 AIX
|
|
* DO regularly ask your vendor for a complete list of patches.
|
|
* Some AIX patches are available via anonymous ftp from:
|
|
ftp://ftp.auscert.org.au/pub/mirrors/software.watson.ibm.com
|
|
/aix-patches
|
|
|
|
6.5 HP/UX
|
|
* DO regularly ask your vendor for a complete list of patches.
|
|
HP has set up an automatic server to allow patches and other security
|
|
information to be retrieved via email. Email should be sent to the
|
|
address
|
|
support@support.mayfield.hp.com.
|
|
The subject line of the message will be ignored. The body (text) of
|
|
the message should be of the format
|
|
|
|
send XXXX
|
|
|
|
where XXXX is the identifier for the information you want retrieved.
|
|
For example, to retrieve the patch PHSS_4834, the message would be
|
|
send PHSS_4834.
|
|
To receive the HP SupportLine mail service user's guide
|
|
send guide.txt
|
|
To receive the readme file for a patch
|
|
send doc PHSS_4834
|
|
To receive the original HP bulletin
|
|
send doc HPSBUX9410-018.
|
|
|
|
HP also has a World Wide Web server to browse and retrieve bulletins
|
|
and patches. The URL is:
|
|
http://support.mayfield.hp.com/
|
|
|
|
6.6 OSF
|
|
* DO regularly ask your vendor for a complete list of patches.
|
|
Some patches are available from:
|
|
ftp://ftp.auscert.org.au/pub/mirrors/ftp.service.digital.com
|
|
/osf/<v>/ssrt*
|
|
or
|
|
ftp://ftp.service.digital.com/pub/osf/<v>/ssrt*
|
|
where <v> is the version of the operating system that you run.
|
|
|
|
6.7 ULTRIX
|
|
* DO regularly ask your vendor for a complete list of patches.
|
|
Some patches are available from:
|
|
ftp://ftp.auscert.org.au/pub/mirrors/ftp.service.digital.com
|
|
/ultrix/<p>/<v>/ssrt*
|
|
or
|
|
ftp://ftp.service.digital.com/pub/ultrix/<p>/<v>/ssrt*
|
|
where <p> is either mips or vax; and
|
|
where <v> is the version of the operating system that you run.
|
|
|
|
==============================================================================
|
|
7.0 Security and the X Window System
|
|
==============================================================================
|
|
Access to your X server may be controlled through either a host-
|
|
based or user-based method. The former is left to the discretion
|
|
of the Systems Administrator at your site and is useful as long as
|
|
all hosts registered in the /etc/Xn.hosts file have users that can be
|
|
trusted, where "n" represents your X server's number.
|
|
|
|
This may not be possible at every site, so a better method is
|
|
to educate each and every user about the security implications
|
|
(see references below). Better still, when setting up a user, give
|
|
them a set of X security related template files, such as .xserverrc
|
|
and .xinitrc. These are located in the users home directory.
|
|
|
|
You are strongly advised to read the section on X window system
|
|
security referred to in the X Window System Administrators Guide (C.4).
|
|
|
|
7.1 Problems with xdm
|
|
Note: Release 6 of X11 is now available and solves many problems
|
|
associated with X security which were present in previous releases.
|
|
If possible, obtain the source for R6 and compile and install it on
|
|
your system. See B.18 for how to retrieve the source for X11R6.
|
|
* xdm bypasses the normal getty and login functions, which means that
|
|
quotas for the user, ownership of /dev/console and possibly other
|
|
preventive measures put in place by you may be ignored.
|
|
* You should consult your vendor and ask about potential security holes
|
|
in xdm and what fixes are available.
|
|
* If you are running a version of xdm earlier than October 1995 then
|
|
you should update to a newer version.
|
|
(Refer to CERT Vendor-Initiated Bulletin VB-95:08, see C.8)
|
|
|
|
7.2 X security - General
|
|
* DO Read the man pages for xauth and Xsecurity.
|
|
Use this information to set up the security level you require.
|
|
* ENSURE that the permissions on /tmp are set to 1777 (or drwxrwxrwt).
|
|
i.e., the sticky bit should be set. The owner MUST always be
|
|
root and group ownership should be set to group-id 0, which is
|
|
"wheel" or "system".
|
|
- If the sticky bit is set, no one other than the owner can
|
|
delete the file /tmp/.X11-unix/X0, which is a socket for your
|
|
X server. Once this file is deleted, your X server will no
|
|
longer be accessible.
|
|
- See G.14 for example commands to set the correct permissions
|
|
and ownership for /tmp.
|
|
* DO use the X magic cookie mechanism MIT-MAGIC-COOKIE-1 or better.
|
|
With logins under the control of xdm (see 7.1), you can turn on
|
|
authentication by editing the xdm-config file and setting the
|
|
DisplayManager*authorize attribute to true.
|
|
When granting access to the screen from another machine, use
|
|
the xauth command in preference to the xhost command.
|
|
* DO not permit access from arbitrary hosts.
|
|
Remove all instances of the 'xhost +' command from the
|
|
system-wide Xsession file, from user .xsession files, and from
|
|
any application programs or shell scripts that use the X window
|
|
system.
|
|
|
|
==============================================================================
|
|
Appendix A: Other AUSCERT information sources
|
|
|
|
A.1 AUSCERT advisories and alerts
|
|
Past AUSCERT advisories and alerts can be retrieved via anonymous
|
|
ftp from
|
|
ftp://ftp.auscert.org.au/pub/auscert/advisory/
|
|
|
|
A.2 AUSCERT's World Wide Web server
|
|
AUSCERT maintains a World Wide Web server. Its URL is
|
|
http://www.auscert.org.au
|
|
|
|
A.3 AUSCERT's ftp server
|
|
AUSCERT maintains an ftp server with an extensive range of
|
|
tools and documents. Please browse through it. Its URL is
|
|
ftp://ftp.auscert.org.au/pub/
|
|
|
|
==============================================================================
|
|
Appendix B: Useful security tools
|
|
|
|
There are many good tools available for checking your system.
|
|
The list below is not a complete list, and you should NOT rely on
|
|
these to do ALL of your work for you. They are intended to be only
|
|
a guide. It is envisaged that you may write some site specific tools
|
|
to supplement these. It is also envisaged that you may look around
|
|
on ftp servers for other useful tools.
|
|
|
|
AUSCERT has not formally reviewed, evaluated or endorsed the tools
|
|
described. The decision to use the tools described is the
|
|
responsibility of each user or organisation.
|
|
|
|
B.1 Crack
|
|
Crack is a fast password cracking program designed to assist site
|
|
administrators in ensuring that users use effective passwords.
|
|
Available via anonymous ftp from:
|
|
ftp://ftp.auscert.org.au/pub/cert/tools/crack/*
|
|
|
|
B.2 COPS and Tiger
|
|
These packages identify common security and configuration
|
|
problems. They also check for common signs of intrusion.
|
|
Though there is some overlap between these two packages, they
|
|
are different enough that it may be useful to run both. Both
|
|
are available via anonymous ftp.
|
|
COPS:
|
|
ftp://ftp.auscert.org.au/pub/cert/tools/cops/1.04
|
|
tiger:
|
|
ftp://ftp.auscert.org.au/pub/mirrors/net.tamu.edu/tiger*
|
|
|
|
B.3 anlpasswd
|
|
This program is a proactive password checker. It runs a
|
|
series of checks on passwords at the time users set them and
|
|
refuses password that fail the tests. It is designed to work
|
|
with shadow password systems. It is available via anonymous ftp
|
|
from:
|
|
ftp://ftp.auscert.org.au/pub/mirror/info.mcs.anl.gov/*
|
|
|
|
B.4 tcp_wrapper
|
|
This software gives logging and access control to most network
|
|
services. It is available via anonymous ftp from:
|
|
ftp://ftp.auscert.org.au/pub/mirrors/ftp.win.tue.nl
|
|
/tcp_wrappers_7.2.tar.gz
|
|
|
|
B.5 Tripwire
|
|
This package maintains a checksum database of important system
|
|
files. It can serve as an early intrusion detection system. It
|
|
is available via anonymous ftp from:
|
|
ftp://ftp.auscert.org.au/pub/coast/COAST/Tripwire/*
|
|
|
|
B.6 cpm
|
|
cpm checks to see if your network interfaces are running in
|
|
promiscuous mode. If you do not normally run in this state then
|
|
it may be an indication that an intruder is running a network
|
|
sniffer on your system. This program was designed to run on
|
|
SunOS 4.1.x and may also work on many BSD systems. It is available
|
|
via anonymous ftp from:
|
|
ftp://ftp.auscert.edu.au/pub/cert/tools/cpm/*
|
|
|
|
B.8 Vendor supplied security auditing packages
|
|
Sun provides an additional security package called SUNshield.
|
|
Please direct enquiries about similar products to your vendor.
|
|
|
|
B.9 smrsh
|
|
The smrsh(8) program is intended as a replacement for /bin/sh
|
|
in the program mailer definition of sendmail(8). smrsh is a
|
|
restricted shell utility that provides the ability to specify,
|
|
through a configuration, an explicit list of executable
|
|
programs. When used in conjunction with sendmail, smrsh
|
|
effectively limits sendmail's scope of program execution to
|
|
only those programs specified in smrsh's configuration.
|
|
It is available via anonymous ftp from:
|
|
ftp://ftp.auscert.org.au/pub/cert/tools/smrsh
|
|
|
|
Note: smrsh comes bundled with Eric Allman's sendmail 8.7.1 and
|
|
higher.
|
|
|
|
B.10 MD5
|
|
MD5 is a message digest algorithm. An implementation of this is
|
|
available via anonymous ftp from:
|
|
ftp://ftp.auscert.org.au/pub/cert/tools/md5/*
|
|
|
|
B.11 rscan
|
|
This tool checks for a number of common IRIX-specific security
|
|
bugs and problems. It is available via anonymous ftp from:
|
|
ftp://ftp.auscert.org.au/pub/mirrors/ftp.vis.colostate.edu
|
|
/rscan/*
|
|
|
|
B.12 SATAN
|
|
SATAN (Security Administrator Tool for Analysing Networks) is
|
|
a testing and reporting tool that collects information about
|
|
networked hosts. It can also be run to check for a number
|
|
of vulnerabilities accessible via the network. It is available
|
|
via anonymous ftp from:
|
|
ftp://ftp.auscert.org.au/pub/mirrors/ftp.win.tue.nl/satan*
|
|
|
|
B.13 logdaemon
|
|
Written by Wietse Venema, this package includes replacements
|
|
for rsh and rlogin daemons. By default these versions do not
|
|
accept wild cards in host.equiv or .rhost files. They also
|
|
have an option to disable user .rhost files. logdaemon is
|
|
available via anonymous ftp from:
|
|
ftp://ftp.auscert.org.au/pub/mirrors/ftp.win.tue.nl/logdaemon*
|
|
|
|
B.14 portmapper/rpcbind
|
|
These are portmapper/rpcbind replacements written by Wietse
|
|
Venema that disallow proxy access to the mount daemon via the
|
|
portmapper. Choose the one suitable for your system. They are
|
|
available via anonymous ftp from:
|
|
ftp://ftp.auscert.org.au/pub/mirrors/ftp.win.tue.nl
|
|
/portmap_3.shar.Z
|
|
ftp://ftp.auscert.org.au/pub/mirrors/ftp.win.tue.nl
|
|
/rpcbind_1.1.tar.Z
|
|
|
|
B.15 PGP Pretty Good Privacy implements encryption and authentication.
|
|
It is available from:
|
|
ftp://ftp.ox.ac.uk/pub/pgp/unix/
|
|
|
|
|
|
B.16 chrootuid
|
|
Allows chroot functionality. The current version is 1.2 (at
|
|
time of writing). Please check for later versions.
|
|
It is available from:
|
|
ftp://ftp.auscert.org.au/pub/mirrors/ftp.win.tue.nl
|
|
/chrooduid1.2
|
|
A digital signature is available from:
|
|
ftp://ftp.auscert.org.au/pub/mirrors/ftp.win.tue.nl
|
|
/chrooduid1.2.asc
|
|
|
|
B.17 CGIWRAP
|
|
It is available from:
|
|
ftp://ftp.cc.umr.edu/pub/cgi/cgiwrap
|
|
|
|
B.18 X11R6
|
|
It is available from:
|
|
ftp://archie.au/X11/R6/*
|
|
ftp://archie.au/X11/contrib/*
|
|
or
|
|
ftp://ftp.x.org/pub/R6/*
|
|
|
|
B.19 Washington University ftpd (wu-ftpd)
|
|
This can log all events and provide users with a login banner
|
|
and provide writable directory support in a more secure manner.
|
|
It is available from:
|
|
ftp://ftp.auscert.org.au/pub/mirrors/wuarchive.wustl.edu
|
|
/packages/wuarchive-ftpd/*
|
|
|
|
NOTE: Do not install any versions prior to wu-ftp 2.4 as these are
|
|
extremely insecure and in some cases have been trojaned.
|
|
Refer to the CERT advisory CA-94:07 (C.8).
|
|
|
|
B.20 Patch 005 for BSD/386 v1.1.
|
|
It is available from:
|
|
ftp://ftp.auscert.org.au/pub/mirrors/ftp.bsdi.com
|
|
/bsdi/patches/README
|
|
ftp://ftp.auscert.org.au/pub/mirrors/ftp.bsdi.com
|
|
/bsdi/patches/?U110-005
|
|
or
|
|
ftp://ftp.bsdi.com/bsdi/patches/README
|
|
ftp://ftp.bsdi.com/bsdi/patches/?U110-005
|
|
(where ? is B or S for the Binary or Source version)
|
|
|
|
B.21 Anonymous FTP Configuration Guidelines
|
|
The CERT document which addresses the many problems associated
|
|
with writable anonymous ftp directories. It is available from:
|
|
ftp://ftp.auscert.org.au/pub/cert/tech_tips/anonymous_ftp
|
|
|
|
==============================================================================
|
|
Appendix C: References
|
|
|
|
C.1 Practical UNIX Security
|
|
Simson Garfinkel and Gene Spafford
|
|
(C) 1991 O'Reilly & Associates, Inc.
|
|
|
|
C.2 UNIX Systems Security
|
|
Patrick Wood and Stephen Kochan
|
|
(C) 1986 Hayden Books
|
|
|
|
C.3 UNIX system security: A Guide for Users and System Administrators
|
|
David A. Curry
|
|
Addison-Wesley Professional Computing Series
|
|
May 1992.
|
|
|
|
C.4 X Window System Administrators Guide
|
|
Chapter 4
|
|
(C) 1992 O'Reilly & Associates, Inc.
|
|
|
|
C.5 Information Security Handbook
|
|
William Caelli, Dennis Longley and Michael Shain
|
|
(C) 1991 MacMillan Publishers Ltd.
|
|
|
|
C.6 Firewalls and Internet Security
|
|
William R. Cheswick & Steven M. Bellovin
|
|
(C) 1994 AT&T Bell Laboratories
|
|
Addison-Wesley Publishing Company
|
|
|
|
C.7 Building Internet Firewalls
|
|
Brent Chapman and Elizabeth Zwicky
|
|
(C) 1995 O'Reilly & Associates, Inc.
|
|
|
|
C.8 CERT advisories are available via anonymous FTP from
|
|
ftp://ftp.auscert.org.au/pub/cert/cert_advisories/*
|
|
CERT vendor-initiated bulletins are available via anonymous FTP from
|
|
ftp://ftp.auscert.org.au/pub/cert/cert_bulletins/*
|
|
|
|
C.9 UNIX System Administration Handbook (second edition)
|
|
Evi Nemeth, Garth Snyder, Trent R. Hein and Scott Seebas
|
|
Prentice-Hall, Englewood Cliffs (NJ), 1995
|
|
|
|
C.10 Essential System Administration
|
|
Aeleen Frisch
|
|
O'Reilly & Associates, Inc.
|
|
|
|
C.11 Managing Internet Information Services
|
|
Cricket Liu, Jerry Peek, Russ Jones, Bryan Buus, Adrian Nye
|
|
O'Reilly & Associates, Inc.
|
|
|
|
C.12 Managing NFS and NIS
|
|
Hal Stern, O'Reilly and Associates, Inc., 1991
|
|
|
|
==============================================================================
|
|
Appendix D: Abbreviated Checklist
|
|
|
|
It is intended that this short version of the checklist be used in
|
|
conjunction with the full checklist as a progress guide (mark off the
|
|
sections as you go so that you remember what you have done so far).
|
|
|
|
1.0 Patches
|
|
[ ] Installed latest patches?
|
|
|
|
2.0 Network security
|
|
[ ] Filtering
|
|
[ ] "r" commands
|
|
[ ] /etc/hosts.equiv
|
|
[ ] /etc/netgroup
|
|
[ ] $HOME/.rhosts
|
|
[ ] NFS
|
|
[ ] /etc/hosts.lpd
|
|
[ ] Secure terminals
|
|
[ ] Network services
|
|
[ ] Trivial ftp (tftp)
|
|
[ ] /etc/services
|
|
[ ] tcp_wrapper (also known as log_tcp)
|
|
[ ] /etc/aliases
|
|
[ ] Sendmail
|
|
[ ] majordomo
|
|
[ ] fingerd
|
|
[ ] UUCP
|
|
[ ] REXD
|
|
[ ] World Wide Web (WWW) - httpd
|
|
|
|
3.0 ftpd and anonymous ftp
|
|
[ ] Versions
|
|
[ ] Configuration
|
|
[ ] Anonymous ftp only
|
|
[ ] Configuration of your ftp server
|
|
[ ] Permissions
|
|
[ ] Writable directories
|
|
[ ] Disk mounting
|
|
|
|
4.0 Password and account security
|
|
[ ] Policy
|
|
[ ] Proactive Checking
|
|
[ ] NIS, NIS+ and /etc/passwd entries
|
|
[ ] Password shadowing
|
|
[ ] Administration
|
|
[ ] Special accounts
|
|
[ ] Root account
|
|
[ ] .netrc files
|
|
[ ] GCOS field
|
|
|
|
5.0 File system security
|
|
[ ] General
|
|
[ ] Startup and shutdown scripts
|
|
[ ] /usr/lib/expreserve
|
|
[ ] External file systems/devices
|
|
[ ] File Permissions
|
|
[ ] Files run by root
|
|
[ ] Bin ownership
|
|
[ ] Tiger/COPS
|
|
[ ] Tripwire
|
|
|
|
6.0 Vendor operating system specific security
|
|
[ ] SunOS 4.1.x
|
|
[ ] Patches
|
|
[ ] IP forwarding and source routing
|
|
[ ] Framebuffers /dev/fb
|
|
[ ] /usr/kvm/sys/*
|
|
[ ] /usr/kvm/crash
|
|
[ ] /dev/nit (Network Interface Tap)
|
|
[ ] Loadable drivers option
|
|
[ ] Solaris 2.x
|
|
[ ] Patches
|
|
[ ] IP forwarding and source routing
|
|
[ ] Framebuffers /dev/fbs
|
|
[ ] IRIX
|
|
[ ] Patches
|
|
[ ] AIX
|
|
[ ] Patches
|
|
[ ] HPUX
|
|
[ ] Patches
|
|
[ ] OSF
|
|
[ ] Patches
|
|
[ ] ULTRIX
|
|
[ ] Patches
|
|
|
|
7.0 Security and the X Window System
|
|
[ ] Problems with xdm
|
|
[ ] X security - General
|
|
|
|
==============================================================================
|
|
Appendix E: Shell Scripts
|
|
|
|
E.1 Script for printing the umask value for each user.
|
|
|
|
#!/bin/sh
|
|
PATH=/bin:/usr/bin:/usr/etc:/usr/ucb
|
|
|
|
HOMEDIRS=`cat /etc/passwd | awk -F":" 'length($6) > 0 {print $6}' | sort -u`
|
|
FILES=".cshrc .login .profile"
|
|
|
|
for dir in $HOMEDIRS
|
|
do
|
|
for file in $FILES
|
|
do
|
|
grep -s umask /dev/null $dir/$file
|
|
done
|
|
done
|
|
|
|
==============================================================================
|
|
Appendix F: Table of operating systems by flavour
|
|
|
|
Operating System SVR4-like BSD-like Other
|
|
-------------------------------------------------------------------
|
|
| |
|
|
| SunOS 4.1.x * |
|
|
| |
|
|
| Solaris 2.x * |
|
|
| |
|
|
| Solaris intel86 x.x * |
|
|
| |
|
|
| Irix x.x * |
|
|
| |
|
|
| HP/UX x.x * |
|
|
| |
|
|
| Ultrix x.x * |
|
|
| |
|
|
| OSF x.x * |
|
|
| |
|
|
| *BSD* x.x * |
|
|
| |
|
|
| Linux x.x * |
|
|
| |
|
|
| AIX x.x * |
|
|
| |
|
|
| SCO x.x * |
|
|
| |
|
|
-------------------------------------------------------------------
|
|
|
|
==============================================================================
|
|
Appendix G: List of commands by flavour
|
|
|
|
Notes:
|
|
1. The commands given here are examples only. Please consult the manual
|
|
pages for your system if you are unsure of the consequence of any
|
|
command.
|
|
2. BSD-style commands are marked as BSD commands, similarly for SVR4.
|
|
3. Commands which are not labelled are expected to work for both.
|
|
4. Full directory paths and program options may vary for different flavours
|
|
of UNIX. If in doubt, consult your vendor documentation.
|
|
|
|
G.1 Restart inetd
|
|
|
|
BSD commands
|
|
# /bin/ps -aux | /bin/grep inetd | /bin/grep -v grep
|
|
# /bin/kill -HUP <inetd-PID>
|
|
|
|
SVR4 commands
|
|
# /bin/ps -ef | /bin/grep inetd | /bin/grep -v grep
|
|
# /bin/kill -HUP <inetd-PID>
|
|
|
|
G.2 Ascertain which services are registered with the portmapper
|
|
|
|
# /usr/bin/rpcinfo -p
|
|
|
|
G.3 Rebuild alias maps
|
|
|
|
# /usr/bin/newaliases
|
|
|
|
If you run NIS (YP), you will then need to rebuild your maps to have the
|
|
change take effect over all clients:
|
|
# (cd /var/yp; /usr/bin/make aliases)
|
|
|
|
G.4 Test whether sendmail wizard password is enabled
|
|
|
|
% telnet hostname 25
|
|
wiz
|
|
debug
|
|
kill
|
|
quit
|
|
%
|
|
|
|
You should see the response "5nn error return" (e.g., "500 Command
|
|
unrecognized") after each of the commands 'wiz', 'debug' and 'kill'.
|
|
Otherwise, your version of sendmail may be vulnerable. If you are unsure
|
|
whether your version is vulnerable, update it.
|
|
|
|
G.5 Set sendmail log level to 9
|
|
|
|
Include lines describing the log level (similar to the following two) in
|
|
the options part of the general configuration information section of the
|
|
sendmail configuration file:
|
|
# log level
|
|
OL9
|
|
|
|
The log level syntax changed in sendmail 8.7 to:
|
|
# log level
|
|
O LogLevel=9
|
|
|
|
G.6 Set syslog log level for mail messages
|
|
|
|
Include lines describing the logging required (similar to the following
|
|
two) in the syslog.conf file:
|
|
mail.info /dev/console
|
|
mail.info /var/adm/messages
|
|
|
|
For the change to take effect, you must then instruct syslog to reread
|
|
the configuration file.
|
|
|
|
BSD commands
|
|
Get the current PID of syslog:
|
|
# /bin/ps -aux | /bin/grep syslogd | /bin/grep -v grep
|
|
Then tell syslog to reread its configuration file:
|
|
# /bin/kill -HUP <syslog-PID>
|
|
|
|
SVR4 commands:
|
|
Get the current PID of syslog:
|
|
# /bin/ps -ef | /bin/grep syslogd | /bin/grep -v grep
|
|
Then tell syslog to reread its configuration file:
|
|
# /bin/kill -HUP <syslog-PID>
|
|
|
|
NOTE: In the logs, look for error messages like:
|
|
- mail to or from a single pipe ("|")
|
|
- mail to or from an obviously invalid user (e.g., bounce or blah)
|
|
|
|
G.7 (Rebuilding and) restarting sendmail(8)
|
|
|
|
To rebuild the frozen configuration file, firstly do:
|
|
# /usr/lib/sendmail -bz
|
|
|
|
NOTE: The above process does not apply to sendmail v8.x which does not
|
|
support frozen configuration files.
|
|
|
|
To restart sendmail(8), you should kill *all* existing sendmail(8)
|
|
processes by sending them a TERM signal using kill, then restart
|
|
sendmail(8).
|
|
|
|
BSD commands
|
|
Get the pid of every running sendmail process:
|
|
# /bin/ps -aux | /bin/grep sendmail | /bin/grep -v grep
|
|
Kill every running sendmail process and restart sendmail:
|
|
# /bin/kill <pid> #pid of every running sendmail process
|
|
# /usr/lib/sendmail -bd -q1h
|
|
|
|
SVR4 commands
|
|
Get the pid of every running sendmail process:
|
|
# /bin/ps -ef | /bin/grep sendmail | /bin/grep -v grep
|
|
Kill every running sendmail process and restart sendmail:
|
|
# /bin/kill <pid> #pid of every running sendmail process
|
|
# /usr/lib/sendmail -bd -q1h
|
|
|
|
G.8 Test whether ftpd supports SITE EXEC
|
|
|
|
For normal users:
|
|
|
|
% telnet localhost 21
|
|
USER username
|
|
PASS password
|
|
SITE EXEC
|
|
|
|
For anonymous users:
|
|
|
|
% telnet localhost 21
|
|
USER ftp
|
|
PASS username@domainname.au
|
|
SITE EXEC
|
|
|
|
You should see the response "5nn error return" (e.g., "500 'SITE
|
|
EXEC' command not understood"). If your ftp daemon has SITE EXEC
|
|
enabled, make sure you have the most recent version of the daemon (e.g.,
|
|
wu-ftp 2.4). Older versions of ftpd allow any user to gain shell access
|
|
using the SITE EXEC command. Use QUIT to end the telnet session.
|
|
|
|
G.9 Ascertain whether anonymous ftp is enabled
|
|
|
|
% ftp localhost
|
|
Connected to localhost
|
|
220 hostname FTP server ready
|
|
Name (localhost:username): anonymous
|
|
331 Guest login ok, send username as password
|
|
Password: user@domain.au
|
|
230 Guest login ok, access restrictions apply.
|
|
Remote system type is UNIX.
|
|
Using binary mode to transfer files.
|
|
ftp>
|
|
|
|
G.10 Ensure that * in the password field is correctly implemented
|
|
|
|
1. Try using NIS with the '*' in the password field for example:
|
|
+:*:0:0:::
|
|
If NIS users cannot log in to that machine, remove the '*' and try
|
|
the next test.
|
|
|
|
2. With the '*' removed, try logging in again. If NIS users can log in
|
|
AND you can also log in unauthenticated as the user '+', then your
|
|
implementation is vulnerable. Contact the vendor for more information.
|
|
If NIS users can log in AND you cannot log in as the user '+', your
|
|
implementation should not be vulnerable to this problem.
|
|
|
|
G.11 Find .exrc files
|
|
|
|
# /bin/find / -name '.exrc' -exec /bin/cat {} \; -print
|
|
|
|
See also G.19.
|
|
|
|
G.12 Locate and print .forward files
|
|
|
|
# /bin/find / -name '.forward' -exec /bin/cat {} \; -print
|
|
|
|
See also G.19.
|
|
|
|
G.13 Remove execute permission on /usr/lib/expreserve
|
|
|
|
# /bin/chmod 400 /usr/lib/expreserve
|
|
|
|
G.14 Set ownership and permissions for /tmp correctly
|
|
|
|
# /bin/chown root /tmp
|
|
# /bin/chgrp 0 /tmp
|
|
# /bin/chmod 1777 /tmp
|
|
|
|
NOTE: This will NOT recursively set the sticky bit on sub-directories
|
|
below /tmp, such as /tmp/.X11-unix and /tmp/.NeWS-unix; you may
|
|
have to set these manually or through the system startup files.
|
|
|
|
G.15 Find group and world writable files and directories
|
|
|
|
# /bin/find / -type f \( -perm -2 -o -perm -20 \) -exec ls -lg {} \;
|
|
|
|
# /bin/find / -type d \( -perm -2 -o -perm -20 \) -exec ls -ldg {} \;
|
|
|
|
See also G.19.
|
|
|
|
G.16 Find files with the SUID or SGID bit enabled
|
|
|
|
# /bin/find / -type f \( -perm -004000 -o -perm -002000 \) \
|
|
-exec ls -lg {} \;
|
|
|
|
See also G.19.
|
|
|
|
G.17 Find normal files in /dev
|
|
|
|
# /bin/find /dev -type f -exec ls -l {} \;
|
|
|
|
See also G.19.
|
|
|
|
G.18 Find block or character special files
|
|
|
|
# /bin/find / \( -type b -o -type c \) -print | grep -v '^/dev/'
|
|
|
|
See also G.19.
|
|
|
|
G.19 Avoid NFS mounted file systems when using /bin/find
|
|
|
|
# /bin/find / \( \! -fstype nfs -o -prune \) <expression>
|
|
|
|
As an example, <expression> could be
|
|
-type f \( -perm -004000 -o -perm -002000 \) -exec ls -lg {} \;
|
|
|
|
|
|
==============================================================================
|
|
The AUSCERT team have made every effort to ensure that the information
|
|
contained in this checklist is accurate. However, the decision to use the
|
|
tools and techniques described is the responsibility of each user or
|
|
organisation. The appropriateness of each item for an organisation or
|
|
individual system should be considered before application in conjunction with
|
|
local policies and procedures. AUSCERT takes no responsibility for the
|
|
consequences of applying the contents of this document.
|
|
|
|
AUSCERT acknowledges technical input and review of this document by CERT
|
|
Coordination Center and DFN-CERT and comments from users of this document.
|
|
|
|
Permission is granted to copy and distribute this document provided that The
|
|
University of Queensland copyright is acknowledged.
|
|
|
|
(C) Copyright 1995 The University of Queensland
|
|
==============================================================================
|
|
|
|
If you believe that your system has been compromised, contact AUSCERT or your
|
|
representative in FIRST (Forum of Incident Response and Security Teams).
|
|
|
|
Internet Email: auscert@auscert.org.au
|
|
AUSCERT Hotline: (07) 3365 4417 (International: + 61 7 3365 4417)
|
|
Facsimile: (07) 3365 4477
|
|
AUSCERT personnel answer during business hours (AEST - GMT+10:00),
|
|
on call after hours for emergencies.
|
|
|
|
|
|
Australian Computer Emergency Response Team
|
|
c/- Prentice Centre
|
|
The University of Queensland
|
|
Brisbane, Queensland 4072.
|
|
Australia
|
|
|
|
-----BEGIN PGP SIGNATURE-----
|
|
Version: 2.6.2i
|
|
Comment: Finger pgp@ftp.auscert.org.au to retrieve AUSCERT's public key
|
|
|
|
iQCVAwUBMNdrTih9+71yA2DNAQH9sQP/aWGDwRG80e4oz6pgeRRkzB25tm0D12ew
|
|
8zXBldNrbGC1s0h4U//G/WPNvWeF4Llr7GAAevTxwc8RMeDS9N3Aw5YTpPXaOE+x
|
|
WSqHDEQfCwRgiOJc4sw3GA9r7/HYcwi81E06gNwmFTDU+IMmAiKCBisw/vNCnHS9
|
|
RztMITIV7is=
|
|
=wZf1
|
|
-----END PGP SIGNATURE-----
|