Up: SGI security Frequently Asked Questions (FAQ)
Next: ! -4- How can I log more information about logins?
Previous: -2- How can I check my system for security problems?
Subject:    -3- How can I configure IRIX to be more secure?
Date: 30 Nov 1995 00:00:01 EST

  Several aspects of SGI's default IRIX configuration were chosen for
  convenience, not security. Unless your machine is not networked, you
  may be more concerned about security than SGI assumed.  Note that
  these items have been discussed on Usenet many times, and Usenet
  chatter is not a good way to change SGI policy. If they bother you,
  complain to your sales rep and then fix them yourself as follows.

  Under any version of IRIX,

  - Several accounts come without passwords, including (but not limited
    to) guest, 4Dgifts, demos, tutor, tour and particularly lp. Examine
    /etc/passwd and lock all unnecessarily open accounts.  Note that 1)
    parts of IRIX (e.g. 'inst') use the open guest account by default,
    and 2) remote 'lp' clients need access to the lp account to print,
    so you'll need to make other arrangements. Completists may wish to
    read CERT advisory CA-95:15, at
    ftp://info.cert.org/pub/cert_advisories/CA-95%3A15.SGI.lp.vul, and
    SGI advisory 19951002-01-I, at
    ftp://sgigate.sgi.com/Security/19951002-01-I.

  - 'xdm' does 'xhost +' by default when you log in. This allows anyone
    to open windows on your display and even to record what you type at
    your keyboard. Close this hole by removing the 'xhost +' from
    /usr/lib/X11/xdm/Xsession, /usr/lib/X11/xdm/Xsession-remote and (in
    IRIX 5.x) /usr/lib/X11/xdm/Xsession.dt.  In IRIX 5.2 and later you
    can use X authority to control access to remote displays; see
    below. In IRIX 5.1.x and earlier X authority doesn't work, so
    you'll need to use 'xhost' judiciously to get to remote displays:
    say 'xhost +localhost' to run DGL programs and 'xhost +otherhost'
    to display remote X programs.

  - At least some of the possible default values of the PATH
    environment variable begin with the current directory. (The system
    interprets either a period or the empty string in any component of
    PATH as the current directory. PATH is colon-separated, so if it
    begins with a colon the first component is the empty string.) This
    exposes you to Trojan horse programs. Set PATH to a safe value
    (remove the current directory, or at least move it to the end) in
    /etc/cshrc and/or /etc/profile for regular users and /.login for
    root.

  - By default, /etc/config/ypbind.options contains the -ypsetme
    option. This allows someone who can fake your IP address to change
    your YP binding. Remove the -ypsetme option to close the hole and
    add the -s option for a little extra protection. Comment out the
    invocations of 'ypset' in /var/yp/make.script and /var/yp/ypmake to
    avoid error messages.  If your site runs ypbind with the -v
    (verbose) option, you may also want to add 'YPSET=true' to
    /etc/config/ypmaster.options and comment out the 'ypset' line in
    /var/yp/ypmake. See the ypbind(1) and ypset(1) manpages for more.

  - If you use SLIP (see slip(1M)), be sure that SLIP accounts' home
    directories are not world-writable. SLIP accounts are uid 0, so
    it's bad if just anyone can mess with their .forward files and the
    like.  /tmp, which is recommended in the "IRIX Advanced Site and
    Server Administration Guide", is necessarily world-writable and a
    bad choice.  You may want to make an empty, root-owned, mode 755
    directory to the effect of /usr/slip and use that. Any number of
    SLIP accounts can use a single home directory without conflict.

  - Add '-a' to the rlogind and rshd lines in /etc/inetd.conf to require
    remote hostnames and addresses to match.  You *might* want to
    disallow .rhosts files by adding the '-l' flag as well, but this
    removes real functionality and should not be done without reason.
    See the rlogind(1M) and rshd(1M) manpages.  Note that rlogind's '-l'
    flag does not work in IRIX 5.2. It does work in IRIX 5.3.

  - The default root crontab in current IRIXes
    (/var/spool/cron/crontabs/root) creates the SYSLOG and cron log with
    group and world read permission. Change the '033' on lines 25 and 27
    to '077' to prevent non-superusers from reading these files.

  - By default, xdm looks for X terminal login requests on port
    177. This is no different (for security purposes) than allowing
    rlogin or telnet connections, but it might be undesirable in some
    environments. Edit /var/X11/xdm/Xaccess to restrict this access,
    e.g. by placing a `!' in front of each of the two lines which begin
    with an asterisk to prevent all XDMCP requests.

  - /etc/init.d/rmtmpfiles resets the permissions on /tmp and /var/tmp
    at every bootup. By default, permissions are set to 1777; the '1'
    means sticky, so one user can't remove another's temporary files. If
    one does 'chkconfig nostickytmp off', permissions are set to 777 and
    any user can remove another's temporary files. Don't do this: it
    allows a variety of attacks involving race conditions in setuid
    programs. A related class of attacks is described in
    ftp://ciac.llnl.gov/pub/ciac/bulletin/f-27.permissions-on-tmp.asc,
    but note that Sun's tmpfs is not an essential component of the hole.

  - Non-root users can give away files. This can be used to defeat
    accounting and quotas. Set the 'restricted_chown' kernel variable to
    1 to allow only root to give away files. This may break some
    programs which depend on unrestricted chown, e.g. /bin/mail (when
    delivering to an NFS volume without root access) as discussed in the
    admin FAQ. (Thanks to Jonathan Rozes <jrozes@tufts.edu> for this and
    the next item.)

  - NFS connections to unprivileged ports are accepted by default. Set
    the 'nfs_portmon' kernel variable to 1 to reject NFS connections
    to unprivileged ports.

  - Read the rest of the entries in this section and make the changes
    they describe if appropriate.

  Under IRIX 5.x only,

  - Turn on shadow passwords, which are not used by default. Run
    'pwconv' to move your passwords to /etc/shadow, where only root can
    read them. Note that you'll have to update /etc/shadow by hand for
    NIS users. See the pwconv(1M) and shadow(4) manpages.

  - Limit the hosts from which portmap(1) will accept RPC requests by
    using the -a option in /etc/config/portmap.options. For example, if
    your machine is www.xxx.yyy.zzz and your subnet is www.xxx.yyy you
    can reject RPC requests from outside your subnet by putting '-a
    255.255.255.0 www.xxx.yyy.0' in that file.

  This list is guaranteed to be incomplete. Keep your eyes open.
  Similar lists are in SGI's security advisory 19950401-01-I, which is
  at ftp://sgigate.sgi.com/Security/19950401-01-I, and a post by Dave
  Olson <olson@sgi.com>, a copy of which is at
  ftp://viz.tamu.edu/pub/sgi/software/security/olson-security.

Up: SGI security Frequently Asked Questions (FAQ)
Next: ! -4- How can I log more information about logins?
Previous: -2- How can I check my system for security problems?