Gold University of Minnesota M. Skip to main content.University of Minnesota.
Driven to Discover.

What's Inside OIT



links related to OIT

University of Minnesota

STANDARDS & GUIDELINES



     

GUIDELINE—Server Security Guideline (Appendix J)


Responsible Office: Office of Information Technology
Responsible Officer: Chief Information Officer

EFFECTIVE DATE: November 2003
VIEW HISTORY
RELATED POLICY/PROCEDURE:

Securing Private Data

GUIDELINE
A guideline is highly recommended.


Contents

Introduction

Server Security Guideline-Overview

Installation Notes- By Operating System

U of M Resources

Appendix A: Additional Steps for Protecting 'Not Public' Data

Appendix B: List of Services to disable- By Operating System

Appendix C: More detail on Unix-Like operating systems

Appendix D: More detail on Windows operating systems

Appendix E: Installation Configuration Process

 

Introduction

Purpose

This document is intended to provide a set of guidelines for the installation of computers that are part of the University of Minnesota network so that they meet at least a minimally acceptable level of security. Due to the volatile nature of what is considered to make a computer "secure", please consider all of these guidelines as highly recommended unless otherwise noted.

Since computer security is a rapidly changing field with constantly changing vulnerabilities and fixes to those vulnerabilities, making a computer absolutely secure is just not possible. Securing a computer amounts to determining the worth of each computer and the data that passes through it and then deciding how far one has to go to protect that computer and data. Installing every single computer security tool on every single computer is usually not a good investment. It would be serious overkill for the majority of computers that are probably best protected with a few well-chosen security tools and a vigilant maintainer.

These guidelines take this rapid evolution into account and present a philosophy of installing computers rather than a cookbook for how to install computers. There is a large continuum of computer security ranging from computers that don’t contain private data and need minimal security to highly secure computers that need extraordinary measures.

While, neither of these extremes is generally true within the University's environment, it is really up to the individual computer's owner to choose the appropriate level of security for each computer, and then to implement appropriate security measures to maintain that level of security.

Other factors such as state and federal laws or industry standards may help determine the level of security needed. Some examples are the Minnesota Data Practices Act, FERPA, GLB, HIPAA and Payment Card Industry (credit card) standards that address certain “not public” data such as social security numbers, student records, patient data and credit card numbers.

Definitions

Before continuing it is best to address the sometimes confusing definitions of the words “service”, “server” and “client”. To avoid any confusion about their usage here, the definitions for this document are as follows:

Service: The work performed on behalf of a user or client program. Usually, services are implemented by some set of software known as a "server." "Client" programs then connect to the "server" and request that work is done on their behalf. The language that the "client" and "server" use to communicate is a "protocol."

Server: The software that performs a "service." This software is often referred technically to as a “daemon” or “service”.

Client: The software that uses the "service" provided by a "server."

A good working definition of a server within the University might be a computer that more than one individual or “concurrent” user uses as a “common share point” for databases, data files, word processing files, or images. Other functionality that may be provided includes calendaring, document management, mail distribution/handling, or web-based services.

Maintenance

One good issue to keep in mind while reading this document is that to simply install a good mix of computer security tools onto a computer is never enough. All security tools require at least occasional care and maintenance. This can be anything ranging from the installation of new patches to the operating system to modifying the availability of services due to the changing role of a computer or an organization. With the quickly changing nature of things in the computer world, it is important to keep up with the time and to know before hand that any computer security model must adapt with these changes.

Server Security Guideline- Overview

For any operating system, it is important to follow the general guidelines below. The actual details used to implement these guidelines may vary slightly (see the checklist in the next section), but the ideas are the same regardless of the operating system. If followed, these will go a long way toward securing a computer.

In addition to the guidelines the following standards are required to be followed for all computers:

Here are some general recommendations for all operating systems. Do these roughly in the order listed.

(  ) Review the purpose or role of the computer

  • Conceptualize the role of each computer within an organization and which services each computer will offer. The services that it provides should entirely be dictated by its role within an organization and by the type of information (i.e., public vs. “not public”) that flows through it. See the additional steps for protecting private and “not public” information in Appendix A.
  • Create departmental policies to address the acceptable use and security of all computers if more restrictive that the University’s Acceptable Use Policy.

(  ) Set up authentication & account management before connecting to the network

  • All accounts should have strong passwords.
  • Administrative or root accounts should have even stronger passwords or passphrases.
  • Only use the administrator or root account when absolutely necessary.
  • Assign a unique administrative account and password to each individual to better distinguish activities between multiple administrators.
  • Use different passwords for administrator or root and general user accounts.
  • Force new users to change their passwords when they first login.
  • Regularly review the access list or log for users, especially of root and groups. Look for unexpected rights or changes.
  • Limit the use of the same password across dissimilar systems (use of the same password on a less secure system may endanger a more secure system).
  • Disable or delete old or unused accounts that belong to people who no longer need access.
  • Be sure to have a plan and process for securing administrator and root passwords that allows appropriate access to the server in case of illness, turnover, or unforeseen circumstances.
  • See Password Standard at http://www.umn.edu/oit/security/passwords.html
  • For tips on passwords and passphrases, see http://www.umn.edu/oit/security/passwordguide.shtml

(  ) Install and patch the operating system before connecting to the network

  • Run software that is current. The operating system and other software should be vendor supported for security patches.
  • When installing software, make sure to only install software that is needed, making sure to install the latest versions of all software including all recommended and security patches that are available.
  • Download patches to another computer and put on CD or obtain patches for Windows from 1-HELP Technology Help Line.
  • After installation, all computers should be routinely maintained and updated. This includes the installation of operating system patches and new versions of installed software. Review the Security Patch Standard at http://www.umn.edu/oit/security/updates-patches.shtml

(  ) Run minimum number of services

  • Each computer should only provide services needed for its role in an organization.
  • Make sure to configure all installed software, disable all unused features and be sure to limit the availability of any features that are enabled.
  • Disable Telnet and FTP. Use SSH instead.
  • Unless using network management tools, turn off SNMP. If SNMP is enabled, change the default community name and set permissions. Be sure to delete the public community string, if software allows you to do this or at least change the default settings.
  • Use of name services caching is okay, but do not run a name server.
  • See Appendix B for a list of services to be disabled.

(  ) Install filters or firewall

  • Install and configure a packet filtering utility such as TCP wrappers or a software or hardware firewall to protect individual services.
  • The rules should reflect the acceptable use and security policies that have been defined for the computer.
  • Operating system filters that deny or permit certain traffic should be used if available (e.g., most Unix and recent Windows versions).
  • Periodically review the filters for inappropriate or unneeded access.
  • Restrict access to services to only U of M addresses, where prudent. Limit access to databases to specific IP addresses or U of M addresses.

(  ) Set up and review logs

  • Configure all services so that they log all connections and authentication information. Forward all of these logs to a highly secure computer if possible.
  • Someone should be assigned the responsibility to review and as appropriate follow up on possible security violations identified in the system logs. For important servers this might be as often as daily.

(  ) Install security related software

  • Install security related software on each computer, as appropriate to the level of security needed.
  • Install anti-virus or other virus filtering software with daily updating for the latest virus definitions. Computers that store private “not public” data or run a mail server must have anti-virus or filtering software installed. For servers other than those used as email servers, use of anti-virus software is highly recommended whenever available and feasible. See http://www.umn.edu/oit/security/Anti-virusstandard.shtml
  • See the OIT site for current information on anti-virus software: http://www.umn.edu/adcs/software/security/
  • SSH or other encrypted and secure method of access should be installed if remote access or remote administration services are needed. SSH improves the security of user accounts by encrypting all login sessions and allowing the forwarding of X11 and other arbitrary network traffic. Many SSH distributions are free for educational use. For more information on SSH and additional steps to help reduce the risk of SSH password guessing compromises, see http://www.umn.edu/oit/security/ssh.html
  • Install VPN encrypted tunnel if unable to install SSH or when clear text is a security risk. NTS provides (free) VPN client software that provides an encrypted tunnel to the University from the Internet (e.g., connection at home or on the road). See http://www.umn.edu/adcs/help/vpn/

(  ) Maintain physical security

  • Locate the server in a secure location with documentation of who has access.
  • Use Uninterruptible Power Supply (UPS) for servers and other essential peripheral equipment (e.g., monitors, KVM switches, etc.).
  • Locate servers in a climate-controlled environment (e.g., dedicated air conditioning with in-room temperature controls).
  • Consider basic fire suppression services/options (e.g., extinguishers, sprinklers, etc.).
  • Utilize “keyboard locking” software or password protected screen savers to prevent keyboard activity.
  • See Guideline for Physical Security for Critical Servers at http://www.umn.edu/oit/security/Physical_Security.html

(  ) Maintain backups and operational continuity

(  ) Identify the computer for security event notification

(  ) Run a network-based vulnerability scan

  • Run a network-based vulnerability scan (i.e., Qualys) to look for common vulnerabilities. These scans are highly recommended for important servers. Send requests for access to the Qualys scanner to oit.security@umn.edu
  • Review and correct vulnerabilities found or implement a risk-mitigation strategy, concentrating first on the items marked as confirmed level 4 or 5.

Additional steps to enhance security:

  • Review trusted host relationships carefully. Review the configuration and vulnerabilities of all hosts before setting up the trusted host relationship and review periodically. A trusted host relationship between two hosts allows an attacker to use one host to gain access to a second host. All vulnerabilities found on the trusted host can then be applied to the other host. Trusted relationships are controlled by the contents in /etc/hosts.equiv file and users' .rhosts files.
  • Review FTP configuration carefully, particularly if running an anonymous FTP server (Anon FTP: R/O or W/O, never both). Do not run anonymous FTP on any server with sensitive or “not public” data.
  • For web servers, the latest version of Apache (http://www.apache.org/) is almost always the best choice for the software to run the web server. It can handle all but the highest loads and has better security features than almost any vendor provided web server.
  • Avoid running web servers as root and remove all sample scripts.
  • Consider using strong encryption for transmission, such as PGP, SSH or SSL.
  • Consider non-routed “University of Minnesota only” IP addressing for servers with sensitive or “not public” data. Contact nts@umn.edu for details.

For general information on the installation process and some tools to help audit, see Appendix E.

For computers with “not public” or private information

In addition to the above, here are some questions to ask yourself:
  • Does the computer need access to the internet? If no, consider requesting a non-routed IP address.
  • Are you running up to date AntiVirus software to routinely check in-coming mail to the computer?
  • Is anonymous FTP service running? (It should not be.)
  • Is the computer used for a single purpose (e.g., file storage)?
  • Is a web server needed? (Much higher risk)
  • How frequently are security patches applied?
  • Are backups stored in a secure location?
  • How physically secure is the computer?
  • Has OIT Assurance & Security scanned the computer for vulnerabilities?

See Appendix A for additional information and requirements for Securing “Private” and “Not Public” Data.

Server Security Guideline

UNIX-Like operating systems

(  ) Review the purpose or role of the computer

(  ) Set up authentication & account management before connecting to the network

(  ) Install and patch the operating system before connecting to the network

  • Review this section in the Overview section of this document.
  • When installing third party software, consider using the ports or package trees available with each operating system. This ensures that the software is compiled with all available patches on the computer that it will be installed upon.
  • See Appendix C for more information on location of patches for various Unix-Like operating systems.

(  ) Run minimum number of services

For a basic client computer, the only services that should be enabled if needed via inetd are the remote access services, if needed: shell, login and telnet. SSH should be installed and working, then inetd can be turned off all together since it provides far superior remote access than any of the inetd spawned services. There are a few cases where inetd can not be disabled even though SSH is working properly. These include systems that use CDE as the login environment that must also run the CDE daemons and a few other minor cases.
    • Turn off unused inetd services including trivial services: echo, chargen, discard, daytime, time and qotd. They are never needed and can be exploited in ways that will shutdown entire networks. Other services include UUCP and netstat.
    • Turn off all unused RPC services including, but not limited to: rstatd, rusersd, walld, sprayd, rexd, cmsd, ttdbserverd and possibly rquotad (turn it off if the computer is not an NFS server).
    • TCP Wrappers are available for most Unix platforms. Use them for any inetd services still runnining.
  • Turn off all other unnecessary services.
    • Turn off linuxconf and IRC.
    • Disable FTP service. Avoid installing any FTP servers (especially wu-ftpd). If an FTP server is required, then consider NcFTPd (available http://www.ncftpd.com/ ).
    • For all computers except for email hubs, make sure that the sendmail daemons are not running in daemon mode. To do this, make sure that sendmail is not invoked with the -bd flag. Just turning off sendmail is usually not a good idea since this can lead to having undelivered email accumulate on computers. Sendmail is usually invoked as: sendmail -q30m Which causes sendmail to flush it's email queues every 30 minutes.
    • For NFS related daemons (nfsd, biod/nfsiod, statd, lockd), make sure that they are disabled unless the computer must be an NFS server. If the computer needs to be an NFS client, then only biod/nfsiod, statd and lockd are needed. For NFS servers, make absolutely sure that all exported file systems are only exported to the clients that need access. Avoid exporting to self. NEVER export a file system to every computer in the world.
    • See the Appendix C for more information on turning off unnecessary services on Unix-Like operating systems.

(  ) Install filters or firewall

  • Review this section in the Overview section of this document.
  • Install and configure a packet filtering utility such as TCP wrappers, Ipchains, Iptables or a software or hardware firewall to limit access to the computer. The rules should reflect the acceptable use and security policies that have been defined for the computer.
  • See Appendix C for more information on setting up TCP Wrappers on Unix-Like operating systems.

(  ) Set up and review logs

(  ) Install security related software

  • Review this section in the Overview section of this document.
  • See Appendix C for more information on setting up SSH on Unix-Like operating systems. Take additional steps to help reduce the risk of SSH password guessing compromises by using strong passwords, not allowing root to log in through SSH, and using host based or network firewalls to limit access to specific IP addresses. Also, it is particularly important to apply these recommendations to computers running Apple OS/X where administrator accounts are root equivalent.

(  ) Maintain physical security

(  ) Maintain backups and operational continuity

(  ) Identify the computer for security event notification

(  ) Run a network-based vulnerability scan

Resources:

  • The SANS Institute has a step-by-step guide for Securing Linux. A licensed copy of this guide is available to the University of Minnesota at:

Part 1  https://www.umn.edu/oit/security/Protected/linux1.pdf (PDF)

Part 2  https://www.umn.edu/oit/security/Protected/linux2.pdf (PDF)

  • CIS Benchmark/Security tool at:

http://www.cisecurity.org/

http://www.opensolaris.org/os/community/security/files/CIS_Solaris_10_Benchmark_v4.pdf - Solaris 10 Benchmark v4.0

  • Solaris 10 Security Controls Overview by Sun:
http://www.opensolaris.org/os/community/security/files/s10-cis-appendix-v1.1.pdf

Macintosh OS X

Mac OS X is the latest operating system from Apple Computer, Inc. Since Mac OS X is based on BSD Unix, it has some of the same security concerns of a traditional Unix system. By default, the Mac OS X has very few services enabled, which reduces the number of ways an attacker could possibly gain unauthorized access. Nevertheless, it is still more important than ever to keep Mac OS X up to date. Refer to the Unix security section for more information on securing the operating system. For steps to secure Mac OS X desktops, see http://www.umn.edu/oit/security/MacOSXDesktop.html.

(  ) Review the purpose or role of the computer

(  ) Set up authentication & account management before connecting to the network

(  ) Install and patch the operating system before connecting to the network

http://www.apple.com/support/security/security_updates.html
  • Use the Software Update pane in System Preferences to automatically detect and download the latest security fixes from Apple.

(  ) Run minimum number of services

For a basic client computer, the only services that should be enabled via inetd are the remote access services: shell, login and telnet. SSH should be installed and working, then inetd can be turned off all together since it provides far superior remote access than any of the inetd spawned services. By default, OS X does not enable these.

Turn off unused inetd services including trivial services: echo, chargen, discard, daytime, time and qotd. They are never needed and can be exploited in ways that will shutdown entire networks. Other services include UUCP and netstat. By default, OS X does not enable these.

  • Mac OS X provides SSH capabilities which are always installed. They are off by default.

(  ) Install filters or firewall

  • Review this section in the Overview section of this document.
  • TCP Wrapper is already in Mac OSX, but the configuration file is not provided. Create and edit a configuration file to meet the needs of the computer.

(  ) Set up and review logs

(  ) Install security related software

  • Review this section in the Overview section of this document.
  • If using SSH, take additional steps to help reduce the risk of SSH password guessing compromises by using strong passwords, not allowing root to log in through SSH, and using host based or network firewalls to limit access to specific IP addresses. Also, it is particularly important to apply these recommendations to computers running Apple OS/X where administrator accounts are root equivalent.

(  ) Maintain backups and operational continuity

(  ) Identify the computer for security event notification

(  ) Run a network-based vulnerability scan

Resources:

Windows 2000 and newer

Any Windows 2000/2003 server needs a designated server administrator. That person needs to decide if the computer should be set up as a stand-alone or part of the tree. For steps to secure Windows 2000/XP desktops, see http://www.umn.edu/oit/security/windows2000xpinstall.html.  For steps to secure Windows Vista, see http://www.umn.edu/oit/security/windowsVistaDesktop.html

(  ) Review the purpose or role of the computer

(  ) Set up authentication & account management before connecting to the network

(  ) Install and patch the operating system before connecting to the network

  • Review this section in the Overview section of this document.
  • Install the latest version of all software and install ALL service packs and hotfixes available. Hotfixes fix critical security related problems in the operating system.
  • Installation and patching should be done while the computer is disconnected from the network. Download patches to another computer and put on a CD or obtain patches for Windows from 1-HELP Technology Help Line.
  • Patches: http://www.microsoft.com/security
  • Hotfixes: http://www.microsoft.com/technet/security/current.asp
  • Avoid installing the Internet Information Services (IIS) packages if possible. If it must be installed, then MAKE SURE to install all available patches. See the Securing IIS section below.
  • Always install into an NTFS file system. FAT file systems are NOT secure since they know nothing about file permissions.
  • Use the “Secure” snap-in security template and document any changes needed for the specific environment.
  • Test very carefully before setting up Active Directory. Consider not using the Active Directory installation wizard unless thoroughly knowledgeable about Active Directory.
  • Disable dynamic DNS updating. The U-wide DNS does not use the Windows 2000 dynamic updates and Windows 2000 will keep trying to update. To disable, on the advanced TCP/IP settings for DNS make sure the checkbox for “Register this connection’s addresses in DNS” is not checked.
  • Use the Windows Auto Update feature to automatically detect and download the latest security fixes from Microsoft, unless you have a different plan for updating.
  • Review the permissions and parameters on critical registry keys. See Appendix D for more information.
  • If a Windows 2000 computer was installed by Microsoft's unattended install method, then be sure to remove the following file:

C:\winnt\system32\$winnt$.inf

This file might contain some very sensitive information and is only needed during the initial installation. Be sure to remove it if it exists!

  • Securing Domain Controllers:
    • Do not install other services or applications on the Primary or Backup Domain Controllers (PDC and BDC). In particular, never install a web server such as Microsoft's Internet Information Services (IIS).
    • Make sure that the Domain Controllers do not have IP routing enabled.
    • See the University Standard for Securing Microsoft Domain Controllers at:
http://www.umn.edu/oit/security/domain.html
  • Securing Internet Information Services (IIS) packages:
    • Make sure that only those services that are needed are installed or enabled. Use the Microsoft IIS Lockdown tool found at:
http://www.microsoft.com/technet/security/tools/locktool.mspx
  • Make sure that all of the latest patches for IIS are also installed. It's also a good idea to carefully read over Microsoft's recommendations for installing IIS securely in the Microsoft Internet Information Server 5 Security Checklist found at:
http://www.microsoft.com/technet/prodtechnol/windows2000serv/technologies/iis/tips/iis5chk.mspx
  • See Security Guidance for IIS by Microsoft:
http://www.microsoft.com/technet/security/prodtech/IIS.mspx

(  ) Run minimum number of services

  • Review this section in the Overview section of this document.
  • Turn off unused services including trivial services: echo, chargen, discard, daytime, time and qotd. They are never needed and can be exploited in ways that will shutdown entire networks.
  • Turn off all other unnecessary services.
    • Disable SNMP unless using network management tools. If SNMP is enabled, change the default community name and set permissions. Be sure to delete the public community string, if software allows you to do this.
    • Disable IIS web server, if not absolutely needed.
    • Disable FTP service, if SSH is installed.
    • Disable Windows messenger service.

(  ) Install filters or firewall

(  ) Set up and review logs

  • Review this section in the Overview section of this document.
  • Enable auditing/logging of success/failed attempts for activities, such as account logon, account management, policy change, etc.
  • Set the event log file permissions to allow access to Administrator and System accounts only.
  • See Quickstart Tools for minimum settings. https://www.quickstart.umn.edu/

(  ) Install security related software

  • Review this section in the Overview section of this document.
  • If using SSH, take additional steps to help reduce the risk of SSH password guessing compromises by using strong passwords, not allowing root to log in through SSH, and using host based or network firewalls to limit access to specific IP addresses. Also, it is particularly important to apply these recommendations to computers running Apple OS/X where administrator accounts are root equivalent.

(  ) Maintain physical security

(  ) Maintain backups and operational continuity

(  ) Identify the computer for security event notification

(  ) Run a network-based vulnerability scan

Resources:

  • Microsoft provides checklist for securing Windows 2000 at:
http://www.microsoft.com/technet/security/prodtech/Windows2000.mspx
  • Microsoft provides a guide for Securing Windows 2003 at:
http://www.microsoft.com/technet/security/prodtech/windowsserver2003/w2003hg/sgch00.mspx
  • The SANS Institute has a step-by-step guide for Securing Windows 2000. A licensed copy of this guide is available to the University of Minnesota at:
https://www.umn.edu/oit/security/Protected/Windows2000-SbyS.pdf (PDF)
  • CIS Benchmark/Security tool at:
http://www.cisecurity.org/
  • Labmice provides a security checklist. At a minimum, suggest following the basic and mid level security measures for the operating system at:

http://www.labmice.net/articles/securingwin2000.htm

http://labmice.techtarget.com/windows2003/Security/default.htm

  • See Appendix D for Tools to assist in securing Windows 2000.

Novell

(  ) Review the purpose or role of the computer

(  ) Set up authentication & account management before connecting to the network

  • Review this section in the Overview section of this document.
  • Do not use “security equivalence” to assign access rights, if possible. Instead, directly assign access right to all objects.
  • Limit the number of simultaneous connections allowed for each account. It is also a good idea to use station and time of day restrictions to limit unauthorized use of accounts and brute force password guessing attempts.

(  ) Install and patch the operating system before connecting to the network

  • Review this section in the Overview section of this document.
  • Send email to support@groupwise.umn.edu requesting a new Netware container and an admin ID for that container.
  • Patches: http://support.novell.com/
  • When possible, perform a “custom” rather than a “typical” installation. This allows for greater flexibility when choosing what software is installed onto each server.
  • If the server console must be accessed remotely, use a product that encrypts the resulting network traffic, such as “AdRem Free Console” from www.adremsoft.com, or the SSL Port (default is 8009/tcp) of the Web-based “Netware Remote Manager” (Portal).
  • Set “Intrusion Detection=ON” at the container level to help reduce the risk of an intruder guessing passwords.
  • Avoid setting Bindery contexts if possible.

(  ) Run minimum number of services

For example, even if you need to have the Apache Web server loaded, you most likely do not need Tomcat or exteNd Application Server running.

(  ) Install filters or firewall

  • Review this section in the Overview section of this document.
  • If using “NetWare Remote Manager” (Portal), restrict IP access to the service to only those IP addresses or subnets that should need to access the NetWare Remote Manager service.

(  ) Set up and review logs

(  ) Install security related software

(  ) Maintain physical security

  • Review this section in the Overview section of this document.
  • Identify a physically secure location for each Netware server. This will restrict the number of people who have direct access to the server’s console and thus help to increase its security.

(  ) Maintain backups and operational continuity

(  ) Identify the computer for security event notification

(  ) Run a network-based vulnerability scan

Resources:

Printers

Post installation cleanup:

  • Set up a strong password for remote printer configuration management.
  • Disable unnecessary services (e.g. FTP, TFTP and Telnet, if not absolutely needed).
  • Unless using network management tools, turn off SNMP. If SNMP is enabled, change the default community name and set permissions. Be sure to delete the public community string, if software allows you to do this.
  • Set up an access list to only allow machines you want communicating directly with the printer.

Resources:

  • HP Jetdirect Print Services, see
http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=bpj05999
  • Other HP Printers, see

http://people.ucsc.edu/~tigger/hpsetup.htm

http://its.unm.edu/security/hpac.html

  • Securing Multifunction Printers (MFP) - printing, copying, scanning and faxing

SANS- Securing Multifunction Devices:

http://www.sans.org/reading_room/whitepapers/networkdevs/1921.php

University of Texas at Austin- Multifunction Printer Hardening Checklist:

http://security.utexas.edu/admin/mfprinter.html

 

U of M Resources

Here's a list of links to University of Minnesota resources.

Anti-Virus & Firewall Software provided by ADCS:

http://www.umn.edu/adcs/software/security/

Critical Server Identification:  http://www.umn.edu/oit/security/criticalserv.html

Information Technology Support:

http://www.umn.edu/oit/security/InfoTechSupport.html

OIT Security & Assurance web site:

http://www.umn.edu/oit/security/

Passwords

http://www.umn.edu/oit/security/passwordguide.html

Physical Security for Critical Servers:

http://www.umn.edu/oit/security/Physical_Security.html

QuickStart Tools for Windows XP/2000/Vista:

https://www.quickstart.umn.edu/

SSH Software:

http://www.umn.edu/oit/security/ssh.html

VPN software provided by NTS:

http://www.umn.edu/adcs/help/vpn/

Vulnerability scans by OIT Security:

http://www.umn.edu/oit/security/scanprocess.html

University of Minnesota Policies

Acceptable Use of Information Technology Resources

http://policy.umn.edu/Policies/it/Use/ITRESOURCES.html

Anti-Virus Standard

http://www.umn.edu/oit/security/Anti-virusstandard.html

IT Support Staffing

http://www.umn.edu/oit/security/InfoTechSupportStandard.html

Passwords Standard

http://www.umn.edu/oit/security/passwords.html

Securing Private Data Standard

http://www.umn.edu/oit/security/privatedata.html

Secure Data Deletion Standard

http://www.umn.edu/oit/security/datadeletion.html

Securing Microsoft Domain Controllers Standard

http://www.umn.edu/oit/security/domain.html

Security Patch Standard

http://www.umn.edu/oit/security/updates-patches.html

Developing a Plan for Operational Continuity

http://policy.umn.edu/Policies/Operations/Safety/OPERATIONSPLAN.html

Appendix A: Additional Steps for Securing “Private” and “Not Public”Data

In addition to the general guideline, it is recommended that departments or collegiate units with private or “not public” data develop a security plan. The plan should be reviewed and approved by an appropriate person such as the Dean, Director or Department Head. For more information, see the Securing Private Data Standard at http://www.umn.edu/oit/security/privatedata.html

The following baseline requirements substantially improve security:

(  ) Local data owner: Computers and other devices must have an identified local data owner (such as the principal user of the data or the unit supervisor) who is responsible for the data and can act as a point of contact.

(  ) Technical support required: Computers and other devices must be either continuously managed or reviewed on an ongoing basis for appropriate security measures by a full-time information technology professional, such as competent local information technology support staff.

(  ) Staffing level: Units are responsible to have appropriately supervised professional technical support staffing sufficient to maintain information security. The staffing level should be appropriate to the environment, i.e. the amount and type of private information for which they are responsible and the level of risk.   See the Information Technology Support Staffing Standard and the related Information Technology Support Guideline for additional information.

(  ) Configuration: Computers and other devices must be set up in accordance with applicable University security guidelines and standards. As received from the vendor, computers and other devices are not configured for security and require initial as well as ongoing review of the configuration and security of the operating system and software.

(  ) Maintenance and patching: Security vulnerabilities are regularly found and publicized for software. Regular patching, installation of newer versions, and other maintenance must be performed to protect private data (see the Security Patch Standard). Automatic settings or centralized updating of security patches is recommended for most desktop computers.

(  ) Authentication: Access to private data must be authenticated (e.g. by using a strong and complex password) with file access privileges differentiated by user. Administrator or root level passwords should be exceptionally strong, since these accounts allow complete control of the system. User accounts with fewer privileges should be used instead of root accounts whenever possible. Periodic review of access (through the authorization processes) for databases and tables that are multi-user and outside of those "centrally-administered" is required.

(  ) Encryption: If sent across the Internet (external to the University's network) or other open networks such as wireless connections, both the authentication data (e.g. a userid and password) and the data itself must be encrypted with strong encryption. Encryption of private data stored on laptop computers or other portable devices is required. An offsite plain-text backup version in a secure location is recommended to protect against lost encryption keys. See encrypting stored data.  The University's wired network is not considered an open network.

(  ) Anti-virus technology: Desktops and laptop computers must have anti-virus software or filters installed and updated daily (automatic updates recommended). In addition, other Windows computers, including servers, must have anti-virus software installed and updated daily. (See the Anti-Virus Standard).

(  ) Firewall or filtering: A software firewall, hardware firewall, or other network filtering (e.g. port or IP address filtering) technology must be used to limit network access to the device storing private data.

(  ) Access: Physical access to computers must be restricted as much as possible. Devices not in use for extended periods (e.g. at night and on weekends) must be turned off. Laptops must be physically restrained (e.g. via an anchoring device) at work stations and servers must be appropriate and secure physical facility. See Physical Security for Critical Servers Guideline. Password protected screen saver programs should be used in open locations.

(  ) Security event logging: Host security log files must be configured and reviewed for anomalies. Logs must be of sufficient size to provide useful information in case of a security event (at least 90 days of logs). See  Information System Activity Review procedure in the Securing Private Data Standard.

(  ) Reporting Critical Servers: Servers storing private data must register with OIT Security & Assurance as "critical servers" and be scanned regularly with vulnerability testing software with corrective actions taken as appropriatee. Registration of the server can be accomplished by completing the online form, see Critical Server Identification for more information.

(  ) Vulnerability scans: Servers storing private data must be scanned regularly with OIT Security vulnerability scanner with corrective actions taken as appropriate. See http://www.umn.edu/oit/security/scanprocess.html for information on the scan process.

(  ) Backups: Periodic backup copies of software and data must be made, tested, and stored securely (not in staff cars, homes, etc). The physical security of the removable media must be maintained and plans made to allow recovery from unexpected problems.

(  ) Disposal of data and equipment: A “secure deletion” program must be used to erase data from hard disks and media prior to transfer or disposal of hardware. (See secure deletion). Permanent media (e.g. CD's, etc.) must be physically destroyed.

(  ) Limit services: Services available on computers or other devices must be as limited as possible. Web server, ftp server, mail server, peer to peer, and anonymous file sharing software can significantly raise the security risk to private data. Unless a high level of expertise is available and these services are closely monitored at all times, this higher risk software should not be installed.

(  ) Training: Training provided by the University on data security practices must be completed by both new and existing employees.  In certain units (e.g. units subject to the HIPAA and other regulations) University community members in addition to employees are also required to complete training.

Some additional tools:

Note: Per the Internal Access to University Information policy, the term “not public” includes all information, which is not public (e.g., private, non-public and confidential).

Appendix B: List of Services to Disable- By Operating System

List of Services to Disable- By Operating System

In general, these services should be disabled on computers on the U of M network.

Service

Port

Protocol

Unix-Like

Windows 2000/2003 Server

Novell

Chargen

19

tcp/udp

X

X

X

daytime

13

tcp/udp

X

X

X

Echo

7

tcp/udp

X

X

X

finger

79

tcp/udp

X

X

X

discard

9

tcp/udp

X

X

X

linuxconf

98

tcp/udp

X

  
nntp

119

tcp/udp

X

  
qotd

17

tcp/udp

X

X

X

rexd  

X

  
systat

11

tcp/udp

X

  
tcpmux

1

tcp/udp

X

  
uucp

540

tcp/udp

X

  

These services should be reviewed and disabled if unused or unneeded. This list is illustrative and not exhaustive of all the services that should be disabled.

Service

Port

Protocol

Unix-Like

Windows 2000/2003 Server

Novell

DNS server (note: caching servers are ok)

53

tcp/udp

X

X

X

irc-serv

6666, 6667

tcp/udp

X

  
lockd

4045

tcp/udp

X

  
netstat

15

tcp/udp

X

  
rpc.cmsd

changeable

tcp/udp

X

  
rpc.sadmind

changeable

tcp/udp

X

  
rpc.ttdserverd

changeable

tcp/udp

X

  
smtp

25

tcp/udp

X

X

X

snmp

161, 162

tcp/udp

X

X

X

sunrpc/portmap

111

tcp/udp

X

X

X

tftp

69

udp

X

X

X

time

37

tcp/udp

X

  

For more information about the service, see  http://www.networkice.com/advice/exploits/ports/default.htm

Appendix C: More detail on Unix-Like operating systems

Patches

Solaris

  • Patches: http://sunsolve.sun.com/
  • Avoid installing the Common Desktop Environment (CDE)
  • Avoid installing the Solstice Remote Administration packages

IRIX

AIX

NOTE: patches for AIX are available by ftp, but a much easier way to obtain them is via a program called FixDist available at the given URL. Refer to it's documentation for instructions on obtaining patches with FixDist.
  • Avoid installing the Common Desktop Environment (CDE)
  • Avoid installing the Web Administration packages
  • Avoid installing the web server and web browser packages

LINUX

RedHat/Slackware/Debian/SUSE Linux/Cadera OpenLinux

NetBSD/OpenBSD/FreeBSD

SSH

Install SSH, if remote login or remote administration capabilities are needed. SSH goes a long way toward improving the security of user accounts by encrypting all login sessions and allowing the forwarding of X11 and other arbitrary network traffic. SSH is free for educational use.

Use your vendor supplied package if available and up-to-date or obtain a copy from http://www.ssh.com/ or http://www.openssh.org.

Carefully read the documentation that comes with the source distribution!

Compiling and installing SSH usually as simple as:

./configure
make
make install

To install the SSH distribution into a directory other than /usr/local, then add the --prefix=... option to the configure command. See the documentation in the source distribution for more information on this and other configure options.

Configuring SSH can be a fairly complex task. However, doing a 'make install' is usually enough for a basic configuration. Please refer to the SSH documentation for more complete configuration instructions.

Take additional steps to help reduce the risk of SSH password guessing compromises:

  • Use strong passwords
  • Do not allow root to log in through SSH
  • Use host based or network firewalls to limit access to specific IP addresses.

Also, it is particularly important to apply these recommendations to computers running Apple OS/X where administrator accounts are root equivalent.

Remove Telnet and FTP service after installing SSH.

For more information on SSH, see http://www.umn.edu/oit/security/ssh.html

System logs

For UNIX-like operating systems, logs are passed through a daemon by the name of syslogd. Make sure that it is enable and for clients, is being run in secure mode (if possible, this is usually enabled with the -s flag. See the documentation for syslogd to see if secure mode can be enabled).

For client computers, here is a sample configuration file for syslogd that forwards all logs to two hosts: host1 and host2. And it also stores important logs to local files:

# /etc/syslog.conf for clients
#
*.debug;user.none @host1.umn.edu
*.debug;user.none @host2.umn.edu
mark.info @host1.umn.edu
mark.info @host2.umn.edu
lpr.debug /var/adm/lpd-errs
#
*.err;kern.debug;user.none;daemon.warning /dev/console
*.err;kern.debug;daemon,auth.notice;user.none /var/adm/messages
#
*.emerg;user.none *
#
user.err /dev/console
user.emerg *


This will store some logs on the computer itself and forward all logs off to two highly secure computers: host1 and host2.

For the highly secure computer to which logs are forwarded, here is a configuration file for syslogd that simply stores all logs into separate files:

# /etc/syslog.conf for clients
#
auth.info /var/log/auth/log
kern.info /var/log/kern/log
daemon.info /var/log/daemon/log
mail.info /var/log/mail/log
mark.info /var/log/mark/log
cron.info /var/log/cron/log
*.debug /var/log/debug/log
#
# local software log directories
#
local0.info /var/log/local0/log
local1.info /var/log/local1/log
local2.info /var/log/local2/log
local3.info /var/log/local3/log
local4.info /var/log/local4/log
local5.info /var/log/local5/log
local6.info /var/log/local6/log
local7.info /var/log/local7/log
#
# Let a real person know of ALERT's
#
*.alert user

Packet Filters

IPFilter

http://coombs.anu.edu.au/~avalon/

Open BSD Packet Filter

http://www.openbsd.org/faq/pf/index.html

TCP Wrappers

TCP wrappers is an IP packet filtering utility that controls which hosts are allowed access to services in /etc/inetd.conf.
  • Only install TCP wrappers when they are not already built into the operating system! All of the free source operating systems already contain TCP wrappers. Obtain a copy from ftp://ftp.porcupine.org/pub/security/index.html
  • Carefully read the documentation that comes with the source distribution!
  • In general, building TCP wrappers is accomplished with a single 'make':

For Solaris, AIX, IRIX and other SVR4 related operating systems:

make REAL_DAEMON_DIR=/usr/sbin STYLE=-DPROCESS_OPTIONS sys-type
 

For BSD related operating systems:

make REAL_DAEMON_DIR=/usr/libexec STYLE=-DPROCESS_OPTIONS sys-type

However, before doing this, read through the Makefile that comes with TCP wrappers and adjust it as needed. Read the comments carefully to determine if any adjustments are necessary.

  • To install the TCP wrappers, copy 'tcpd' into the REAL_DAEMON_DIR directory that was specified with the 'make' command. The other helper programs can be installed as well if desired. They are tcpdchk, tcpdmatch, try-from and safe_finger. They usually are installed in the same directory as tcpd.
  • To enable the TCP wrappers, edit /etc/inetd.conf and modify each line. Where each line looks like this:
shell stream tcp nowait root /usr/sbin/rlogind rlogind

modify the last two columns so that the line looks like this:

shell stream tcp nowait root /usr/sbin/tcpd /usr/sbin/rlogind
 

Some operating systems (e.g. BSD) have wrapper awareness built in. See docs on inetd.

  • To configure the TCP wrappers, create two files: /etc/hosts.allow and /etc/hosts.deny. A simple, mostly open configuration is created by creating /etc/hosts.allow as an empty file and placing the following into /etc/hosts.deny:
#
# attempt to stop people from spoofing addresses
#
ALL: PARANOID : rfc931: DENY
#
# don't talk to any any unregistered IP addresses
#
ALL: UNKNOWN : rfc931: DENY
#
# Allow all others and attempt to get an ident response
#
ALL: ALL : rfc931: ALLOW

Turning off unnecessary services

Turning off all other unnecessary services is accomplished in different ways on different operating systems. Here are the methods for several variants of UNIX:

Solaris: remove or edit files in /etc/rc2.d/
IRIX: use the chkconfig command to alter the contents of /var/config/
AIX: use smit
Linux: remove or edit files in /etc/rc.d/rc2.d/
BSD: edit /etc/rc.conf or edit /etc/rc or /etc/rc.local
 

To turn off a service offered by inetd:

edit /etc/inetd.conf

place a '#' at the beginning of the line for the service to be turned off

Then send a HUP signal to the inetd daemon using the kill command:

kill –HUP <PID for the inetd process>
 

Appendix D: More detail on Windows 2000 operating systems

Registry Keys

  • Make sure that the following registry key exists:
HKEYLM\System\CurrentControlSet\Control\SecurePipeServers\winreg

Also, make sure that this key has the following permissions:

Creator/Owner: Full
Administrators: Full
System: Full
And make sure that there are no permissions for Everyone on this registry key.
  • Change the values on the following critical registry keys:

HKLM\System\CurrentControlSet\Control\LSA\RestrictAnonymous=1

HKLM\System\CurrentControlSet\Control\LSA\LMcompatibility=3 (this can be set to 1 if there are clients that don’t have the LANMAN security fixes installed. See Knowledge Base articles 147706 and 175641 for more details).
<</br>HKLM\software\Microsoft\windows nt\currentversion\winlogon\cachedlogonscount=0

HKLM\System\CurrentControlSet\Control\Session Manager\ProtectionMode=1

HKLM\System\CurrentControlSet\Services\Eventlog\Application\RestrictGuestAccess=1

HKLM\System\CurrentControlSet\Services\Eventlog\Security\RestrictGuestAccess=1

HKLM\System\CurrentControlSet\Services\Eventlog\System\RestrictGuestAccess=1

HKLM\System\CurrentControlSet\Control\Print\Providers\Lanman Print Services\Servers\AddPrintDrivers=1

HKLM\System\CurrentControlSet\Control\LSA\Submit Control=1

 

These keys respectively control: anonymous access to shared resources, backward compatibility with the insecure version of LANMAN password hashes, caching of passwords from previously successful logons, protected memory mode for the system, restricting guest access to application, security and system event logs, installation of print drivers and the scheduler service.

For more information on these and other registry keys, especially as they relate to the security of Windows 2000, please refer to the white paper “Windows 2000 Server Baseline Security”

http://www.microsoft.com/technet/security/prodtech/Windows2000.mspx

  • Change the permissions on registry keys with the secadd.exe command which is found in the Windows 2000 resource kit as follows:
Creator/Owner: Full
Administrators: Full
System: Full
Everyone: - remove all permissions –
HKLM\System\CurrentControlSet\Control\SecurePipeServers\winreg

Also change the following permissions:

Everyone: Read
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
HKLM\Software
HKLM\Software\Microsoft\RPC (and all subkeys)
HKLM\Software\Microsoft\Windows NT\CurrentVersion
HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList
HKLM\Software\Microsoft\Windows NT\CurrentVersion\AeDebug
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Compatibility
HKLM\Software\Microsoft\Windows NT\CurrentVersion\drivers
HKLM\Software\Microsoft\Windows NT\CurrentVersion\embedding
HKLM\Software\Microsoft\Windows NT\CurrentVersion\fonts
HKLM\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Font Drivers
HKLM\Software\Microsoft\Windows NT\CurrentVersion\FontMapper
HKLM\Software\Microsoft\Windows NT\CurrentVersion\FontCache
HKLM\Software\Microsoft\Windows NT\CurrentVersion\GRE_Initialize
HKLM\Software\Microsoft\Windows NT\CurrentVersion\MCI
HKLM\Software\Microsoft\Windows NT\CurrentVersion\MCI Extensions
HKLM\Software\Microsoft\Windows NT\CurrentVersion\PerfLib
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Ports (and all subkeys)
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Type 1 Installer
HKLM\Software\Microsoft\Windows NT\CurrentVersion\WOW (and all subkeys)
HKLM\Software\Windows 3.1 Migration Status (and all subkeys)
HKLM\System\CurrentControlSet\Services\LanmanServer\Shares
HKLM\System\CurrentControlSet\Services\UPS
HKLM\System\CurrentControlSet\Services\Schedule
  • Change the permissions on files and directories with the xcacls.exe command which is also found in the Windows 2000 resource kit as follows:
  • The following permissions apply to all files and directories:
Administrators: Full
Creator\Owner: Full
System: Full
Users: Read
Everyone: - remove all permissions –
The only exceptions to these general permissions are detailed in the following sections.
  • Add Replicator: Change:
C:\winnt\system32\repl\import
C:\winnt\system32\repl\export
  • Make Users: Read/Write:
C:\winnt\fonts
C:\winnt\cursors
C:\winnt\system32\printers\tmp
Also, some applications require that non administrator users have write or change permissions on some files in C:\winnt and C:\winnt\system32. Modify the permissions on these files individually as needed rather than changing the permissions on the directories themselves.
  • Make Users: Change:
C:\Temp
C:\Recycler
C:\winnt\system32\cmos.ram
C:\winnt\system32\midimap.cfg
*.gid
*.ftg
*.fts
*.rmi
  • Remove all Users permissions:
C:\winnt\repair
C:\winnt\system32\config
C:\boot.in
C:\ntdetect.com
C:\ntldr
C:\winnt\system32\rsh.exe
C:\winnt\system32\reexec.exe
C:\winnt\system32\regedit.exe
C:\winnt\system32\regedt32.exe
*.adm
*.evt
  • If any directories were recursively modified when setting any of these permissions, be sure to go back and restore Read/Execute permissions to all files with the following extensions that are not also listed above:
*.exe
*.bat
*.com
*.cmd
*.dll
*.ini

Tools

  • Windows 2000 resource kit

There are several useful command line tools that allow scripting of file permissions, services and registry keys in the Windows 2000 resource kit and the resource kit update:

http://www.microsoft.com/windows2000/techinfo/reskit/default.asp

Xcacls.exe: for editing NTFS file permissions
SC.exe: retrieves information about services from Service Controller

Also the Windows 2000 Support Tools, which come with any Windows 2000 implementation, has tools such as

Reg.exe: for the creation and updating of registry keys
  • Microsoft Baseline Security Analyzer identifies common security misconfigurations and uses a version of HFNetChk to scan for missing hotfixes and service packs:
http://www.microsoft.com/technet/security/tools/mbsahome.mspx
  • Auto Update feature automatically detects and downloads the latest security fixes from Microsoft. This feature is available in Windows 2000 Service Pack 3 and above:
http://www.microsoft.com/windows2000/downloads/servicepacks/sp3/default.asp

Appendix E: Installation Configuration Process

This section provides more general information on the configuration process.

Acceptable Use - Security Policies

The security of any computer or organization really begins with a review of the Acceptable Use Policy (AUP) for the computers in the organization. If there is no need for a more restrictive departmental policy, the default policy is the general U of M policy. The departmental policy is intended to define the right and responsibilities of both the users and system maintainers as well as define who these people are. This is really the first step in the security of any computer as it sets out the rules that everyone is to follow. And when the rules are broken, the AUP also defines what happens to those who’ve broken them.

For any department that is developing an AUP within the University, there is really only one rule that must be followed: all departmental AUPs must start with the University’s AUP and add further restrictions. That is, the University’s AUP supercedes all other AUPs within the University. So, for example, a department is not allowed to state in their AUP that the sharing of accounts is allowed since the University’s AUP forbids this.

For the University’s Acceptable Use Policy, refer to this web page:

http://policy.umn.edu/Policies/it/Use/ITRESOURCES.html

For a very good starting point in the creation of an AUP, refer to the Site Security Policy Development paper written by AUCert:

http://www.auscert.org.au/render.html?it=2256&cid=1920

Know the worth of the information and services on a computer

After the policies, the next thing for anyone implementing a computer security policy is to address the issue of the importance of the computers and the information that they contain. While it might be tempting to say "These computers are not important at all, so why bother securing them?" consider that even the most basic of computers is still powerful enough to be used by unscrupulous individuals to cause havoc on the local or even vastly remote networks. All computers are important no matter how insignificant they may seem to be. But of course some are simply those that are more important than others.

To determine the value of a computer, simply look at the type of information that will be flowing through that computer. On the minimal end of the spectrum, consider a computer that is shared by a small group of people in a graduate student office. As long as these students are not working with sensitive or “not public” data, then this is a situation in which minimal security coverage can be appropriate. The only things of real worth on the computer are the operating system itself and all accompanying programs, the system logs, the accounts of the people who use that computer and the general availability of the computer for the people who use it. However, data's value is not always readily apparent.

Please be aware that it is the last item listed above, user accounts, which are one of the most valuable assets on any computer. It is user accounts that are frequently targeted by hostile people since they provide a measure of anonymity on the Internet from which attacks can be launched on even more computers. That is, by stealing someone else's identity, computer criminals are able to cover some of their tracks and make it appear that an innocent party is actually the one launching attacks.

On the other extreme, is the database server that stores student or patient records and other important information such as social security numbers, addresses, medical records, etc. This is highly sensitive or “not public” data and, under pain of legal action, it must remain so. This is a computer that calls for great care and the strongest computer security tools.

It is these sorts of issues that directly determine the value of a computer and thus how far one must go to protect it and the information that it contains. A computer that contains highly sensitive or “not public” information must be highly protected and should be addressed by an approved security plan.

The operating system

Another critical step before connecting to the University of Minnesota network in securing any computer is for those that install and maintain that computer to be intimately familiar with how that computer's operating system and software function. This doesn't mean that one should know every nuance and feature of every piece of software. It means that one should have a healthy knowledge of the primary features and of its basic behavior in common situations.

Without this sort of knowledge, it can be very difficult to determine even if a computer is functioning correctly, let alone if it's being exploited by unauthorized users. If in doubt, ask for help or ask for a scan to check out your configuration.

Choosing which services to run

Now that the most basic issues of securing a computer have been addressed, it is time to turn to the more practical things that can be done. The most basic of these is to choose what services each computer will offer. Or, seen from another perspective, the role of each computer in an organization needs to be defined.

For most computers that fall into the role of a "client" in an organization, it is best to highly limit the services that they offer to only those that are absolutely needed. In some cases, the minimal number of services that are absolutely needed is one: remote access for system administration if administration for clients is centralized. For computers that fill the role of "clients" there is usually no need to provide any other services at all. After all, these computers are almost always acting as clients.

The only common exceptions to this one service on client computers rule are where a client computer needs to be specialized for the people who commonly use it. And the most common service that is needed is remote access to the local disk. A few other, less common services include software licensing, calendar access, font services and remote display access.  These sorts of exceptions do occur for budgetary or other reasons. But the idea here is to start with the absolute minimum number of services and build up instead of starting with every imaginable service and building down.

For computers that fit the role of "server," the situation is similar, but a little more complicated. Having just the minimal, remote access service on a server makes very little sense in most cases. Typically, a computer fits the role of server because it needs to provide one or more services to the entire organization. Common examples include: email servers, file servers, authentication server, compute servers, web servers, and many more. Frequently, several of these services are combined onto a single computer.

The idea to follow when configuring server computers is the same as that for clients. Start with the minimum number of services possible and start adding services as needed. For a server, this can sometimes lead to adding quite a few services, but if done with care, this is usually not a big issue. For example, it's not uncommon to find server computers that are simultaneously acting as file server, email server, font server, authentication server, remote access server, web server and ftp server.

However, for most installations, it is best to not load down any single computer in this way. The impact upon the organization is tremendous if that computer should be out of service for any reason. Spreading the services out among a few computers limits the impact when one of them should be out of service. Some services, such as web server, are difficult to configure securely and others such as remote access can introduce additional risk, so mixing many services usually leads to a less secure configuration as well. Note that the degree of “secureness” is influenced by the number of services in many cases.

Choosing which software to run

One of the simplest ways to select which services are installed on a computer happens when the computer is first installed. By carefully choosing which software bundles get installed, the person installing the computer can greatly simplify the task of choosing which services to run after the install is complete. Some other benefits of only installing needed software packages are that the computer will then have more free disk space and be less complex to maintain.

From a computer security stand point, this practice is also beneficial. Most operating system vendors have created their installation tools so that the end result is a highly usable system. While this may sound like a good thing, it is usually accomplished by loosening the permissions on files and installing configuration files so as to make services as widely available as possible. Thus, the newly installed system might be highly usable not only for those intended to use its services, but also to those not intended to use them.

And finally, a simpler operating system installation means that the job of final configuration of the computer is also simpler. There will be fewer configuration files to customize and fewer files that need to have their permissions tightened, thus making it much easier to identify when a computer is not behaving as it should be. For all of the above reasons, always use a “custom” install option and not the default.

Protecting services

While the simplest method of protecting a service on a computer is to either not install the software or to not run the service at all, this is not always possible since some services need to be available on some computers. The best line of defense for these running services is to use access control package based like Weitse Venema's TCP Wrappers, available at:

ftp://ftp.porcupine.org/pub/security/index.html

They are now shipped and installed by default on most of the free operating systems: NetBSD, FreeBSD, OpenBSD and most versions of Linux.

TCP wrappers provide an amazingly good first line of defense for these computers. They allow the computer's maintainer to define a set of allow/deny rules for each installed service. The decision to allow or deny is then made based on the location of the clients who attempt to connect to the running services. When allowed, the clients see nothing unusual, they simply access the services as if the TCP wrappers weren't there at all. But when denied, the unauthorized client never gets a chance to talk to the service at all. Its connection to the computer running the service is immediately dropped before the service is even made aware of the request.

Besides the ability to allow and deny service requests, the TCP wrappers also provide verbose logging of all connection attempts along with the client's host name, the time of day and whether the connection was allowed or denied. Although quite verbose at times, these logs are immensely useful for a computer's maintainer in debugging network problems or when digging back through logs in an attempt to find out who might be misusing a computer.

For Windows platforms, the Microsoft IP Filtering is an option similar to TCP wrappers for UNIX-like operating systems. For Windows XP, use the built in Internet Connection Firewall (ICF). Microsoft IP Filtering does not provide logging.

Another important aspect to protecting the services on individual computers is to very carefully examine and tune the configuration files for each piece of software. It is almost always a good idea to turn off all features that are not needed and limit access to the enabled features. It's also very important to not overlook the banner messages that are usually defined within the configuration files. An interesting sidelight is the tendency of people to use the word "welcome" in the messages that appear when a service is first accessed. This is a very bad thing to do. The "welcome" message can actually be used during criminal proceeding by the defense to show that the defendant was actually "welcome" to invade the computers!

A good document that talks about banner messages is available from CIAC:

http://www.ciac.org/ciac/bulletins/j-043.shtml

Perhaps the single most important way to protect any service is to carefully maintain and store the logs generated by that service. These logs will not only tell when the service is broken, but in ideal situations will also tell where connections originated, what features of the service were accessed and when. In terms of computer security, there is nothing more valuable than these logs. With them almost any unauthorized access to any computer can be tracked down. Even if the unauthorized users turn logging off, the first connection to the computer will be logged giving valuable information about where any attacks originated and possibly the user name of the person who launched the attack.

To protect these logs, it is always a very good idea to make sure that they are forwarded through the network to another highly secure computer. This configuration keeps the logs secure from modification by unauthorized users. It also keeps them secure from people who just want to sift through them for information about the organization or the people in the organization. Common examples of this type of information include connection patterns, computer names and even people's passwords when mistyped at a keyboard.

To further emphasize the importance of the logs generated by the services on a computer, consider the worst case scenario. A highly secure computer that contains payroll information, including social security numbers is penetrated by someone across the country via the Internet. They download all of the payroll records and proceed to post it to publicly available sites including public web sites, UseNet and large email lists. And finally, they erase the computer's hard drive. If the logs for this computer are verbose and forwarded on to a secure computer, then it is possible to go back and look at the logs to determine where the attack originated, when and what was done to gain access to the payroll computer. This is usually enough information to pass to law enforcement to at least give some leads in an investigation.

Other information that might also appear in the logs include: the actual username that the attack was using, any local usernames that the attack exploited, which services were exploited and how they were exploited. If the logs were not forwarded on to a secure computer, when the computer's disk was erased, any existing logs would probably have been erased. And backups of that computer don't always give a complete picture of what happened to the computer.

Programs for Further Protection

Stepping beyond the limits of the software that is usually installed on a computer by the base operating system, computer security steps into the wider world of software that is available on the Internet. This ranges from the most basic drop-in replacement for software commonly shipped with operating systems to more esoteric software intended to identify changes to the operating system itself. While usually not difficult to install or configure, this software can sometime be difficult due to lack of active maintenance, or lack of support for some operating systems. But, the quality is usually good enough for at least minimal usage.

Perhaps the single most important piece of software that one can install onto a computer is SSH. A drop in replacement for the client and server side of the UNIX rlogin and rsh services, SSH makes a dramatic leap forward in securing an organization's computers by using strong encryption to encrypt all traffic and also the entire login session itself. This defeats the common practice of using network "sniffers" in an attempt to steal other people's passwords. While a mostly UNIX-oriented tool, SSH clients are available for many different platforms including the MacOS and all varieties of Windows.

SSH is ideally suited for use in the system administration of computers. It protects the highly sensitive administrative passwords that frequently give high levels of control to individual computers. SSH also can be used to replace other relatively insecure programs that are used to copy files between computers. These features combined with SSH's ability to tunnel other network connections between computers make SSH an invaluable tool for securely accessing remote computers.

Take additional steps to help reduce the risk of SSH password guessing compromises:

  • Use strong passwords
  • Do not allow root to log in through SSH
  • Limit access to specific IP addresses or U of M addresses.
  • Do not allow Adminstrators on MACs to log in with password through SSH (as an administrator password can give your root on a Mac).

For more information on SSH and other related software, look at the SSH User's Group web site:

http://www.ssh.org/ or Openssh.org http://www.openssh.org/

Please keep in mind that this site is run by Data Fellows, who sell one of the more common commercial versions of SSH.

One of the more common challenges in large organizations is examining the logs created by its computers. They can frequently be extremely verbose, creating many tens of megabytes of logs each day. This makes the job of finding misconfigured or misused computers very difficult. Much like looking for the proverbial needle in the haystack. Luckily, for UNIX-like operating systems there are a few software packages available that make examining the logs much simpler by filtering them based on interesting events.

Two software packages based on similar ideas are swatch and logsurfer. Swatch is available for download at:

http://swatch.sourceforge.net/

Written in PERL, swatch takes the quick and dirty approach to log filtering by allowing the user to create rules based on PERL regular expressions. Once a line out of the logs matches a rule's regular expression, swatch then performs the action present in the corresponding rule. Usually, this action tells swatch to display or ignore the corresponding log, but far more complex actions such as sending email or executing arbitrary programs are possible.

Logsurfer, although the program is similar to swatch in concept, it is a more powerful log filtering program. It is driven by a set of rules built out of regular expression and action, but unlike swatch, it allows other actions that create filtering states. That is, it allows the user to create rules that only match when other rules have already been matched. Thus, with logsurfer, it's possible to look for events that consist of a sequence of events in the logs. Logsurfer is available at:

http://www.cert.dfn.de/eng/logsurf/

Stepping away from the issue of computer logs, another important issue in computer security is knowing when changes have occurred to the files stored on a computer's hard drive. This is especially important due to the proliferation of "root kits", or bundles of software that replace the critical parts of an operating system that deal with user authentication. This problem can be addressed with a package called Tripwire.

The idea behind Tripwire is that one can store information about files stored on a hard drive such as it's size, modification date and a cryptographic hash of it's contents. Then at a later date, these stored values can be compared to what's found on the hard drive. If there's a difference, then the file has changed. Although this sounds like a simple idea, it's surprisingly difficult to implement correctly. The biggest problem revolves around storing the file information in a secure way.

Originally, Tripwire was only runnable on UNIX-like operating systems, but it has now been ported as a commercial product to Windows NT, 2000 & XP available from Tripwire Security Systems located at:

http://www.tripwiresecurity.com/

So far, all of the software packages presented are designed to point out existing problems with a computer, it's operating system or it's installed services. In essence all of the software seen so far is passive in nature. That is, it simply observes a computer and then notifies the computer's maintainer when something is broken or changed. Although this is a very important thing for any computer's maintainer to know, it is not always enough. Sometimes it would be nice to know where weak, but not yet exploited points are on a computer.

Perhaps the single greatest weak point on any computer is the passwords that users pick to protect their accounts. They frequently pick passwords that are incredibly simple to guess, such as their spouse's first name, their birthday or simply a word in the dictionary. And when asked to choose a new password, they will frequently not do so due to the fact that they'll then have to re-memorize their password.

It's this laziness in protecting their accounts that makes users' passwords a prime target of attack for malicious users. Malicious users will obtain a copy of the password file and then they'll attempt to guess the passwords on users accounts. Since this task is easily performed on any computer and since the passwords on users accounts rarely change, the malicious user can take as long as he/she wants to guess passwords in the attempt to guess as many as possible.

To stop this situation from being a problem, it has long been common practice for the maintainers of a computer to attempt to guess the passwords on their user's accounts. The difference is that when the computer's maintainer guesses a password, he/she will notify the user and ask them to change their password. When a malicious user guesses another user's password, he/she will frequently make unauthorized use of that account.

One of the first password guessing programs written for UNIX-like operating systems is the package known simply as Crack. It is built on the simple idea that one can take multiple dictionaries, permute or modify the words found there in lots of different ways and then use the modified words that result to guess user's passwords. The real power in Crack is in the permutation and modification rules. They are very complex and long, performing over 100 different modification to the words in the supplied dictionaries. Also, in more recent versions of Crack, there is support for running it on many computers simultaneous to use the computing power of more than one computer at a time.

Crack can be found here:

http://packetstormsecurity.org/Crackers/crack/

http://packetstormsecurity.org/Crackers/crack/crack5.0.tar.gz

A more recent, and powerful password guessing program for UNIX-like operating systems is John the Ripper, or just John for short. Designed along the same as Crack, but with highly tuned assembler code for extremely fast password encryption, John is about the fastest password guessing program available.

http://www.openwall.com/john/

For Windows, the problem of guessing passwords is an even larger problem. Due to the abysmal encryption algorithm used in Windows systems before Windows 2000, it is far easier to guess a password for older Windows systems than for UNIX-like operating systems. In fact, the encryption algorithm used in Windows NT is so bad, that it’s possible to try all possible passwords on a reasonably powered Pentium II computer. Obviously, this is not a good thing. Microsoft improved the encryption scheme in the newer Windows systems (e.g., Windows 2000 and XP) with the introduction of NTLM2. This algorithm should be used whenever possible. A patch for some older systems is available from Microsoft to allow use of NTLM2. In general it is a good idea to use strong administrative passwords or passphrases of 14 characters.

The most commonly used Windows password guessing program is L0phtCrack:

http://sectools.org/tools2.html

Where to learn more

Want to learn more? Here's a list of some of the better computer security related resources available on the Internet today:

CERT (Computer Emergency Response Team)
Based in Carnegie Mellon, the CERT provides basic computer security guidelines, and issues reports of known vulnerabilities in operating systems:
http://www.cert.org/
SANS
SANS is an organization that provides educational resources and support for system administrators and other computer professionals. Computer security is one of their main focuses.
http://www.sans.org/
COAST
http://www.cs.purdue.edu/coast/
Security Focus
Another computer security information cleaning houses.
http://www.securityfocus.com/
BugTraq
An email list devoted to public discussion of computer security related vulnerabilities.
http://www.securityfocus.com/

Resources and Links