![]() CEG
499/699:
|
|
| 04/17/01 |
Perhaps as many as 90% of the 72 million nodes connected (as of Jan 2000) to the Internet are personal machines, the rest being various servers. Perhaps 80% of these personal machines, and nearly 100% of those behind firewalls in private LANs, are running Windows 95/98/NT/2000 and Linux with little supervision from system administrators, the remaining systems being other variants of Unix and Macintoshes. The 72 million count does not include home-based machines that connect via PPP, even though once PPP-connected they are no less vulnerable than the nodes permanently connected to a LAN. These have become targets of script kiddies.
There are two other lectures related to the current lecture: Fortification and Hardening. It is too pedantic to try to distinguish between proper configuration from these two topics. Suffice it to say, for our immediate purposes, that proper configuration of the system as given is a prerequisite to either fortifying or hardening.
Systems as distributed are often loosely configured. Occasionally this is due to sloppiness of the distributor. More commonly it is because the distributor has tried to configure a generic appeal-to-all setup. So, it is important that we examine the configuration at length and determine what if any changes must be made.
The proper configuration documents from CERT referred below are to be followed. In some cases, they do not explain the reasoning behind their suggestions. The rest of this document aims to fill that gap.
We focus on Unix systems. Should you be interested in configuring NT properly, consult the References section.
Installing a new OS image has become a straightforward activity. Nearly all well-known Linux distributions and Windows NT can be installed by non-computer specialist by booting from a supplied CD and answering certain questions. This activity is not the focus of the lecture. In the lab experiment, we have simplified the install problem further. The rest of the lecture is about checks you should make after this initial phase of installing a new OS image, and associated applications.
Booting time is an excellent point where an attacker can install Trojans. Examine the booting sequence to verify that the kernel and other executables are what they claim to be. Compare the MD5 sums.
Examine every suid root file. Verify that it needs to be set-user-id-ed.
Examine all the files in the standard directories: /, /bin, /boot, /dev, /etc, /root, /sbin, /usr, /usr/bin, and /usr/bin.
Services are started in exactly three ways:
/etc/inittab./etc/inetd.conf.In all cases, only install the absolutely necessary services. If you are not sure what it is, disable it. These services (listed alphabetically) are common to most Unix distributions.
bootp, bootps : used for bootp services. We recommend disabling it unless you are running a bootp server.
comsat : used for incoming mail notification via biff. We recommend disabling it unless you rely heavily on biff.
echo, daytime, discard, chargen: These services are used largely for testing and are largely unnecessary. We recommend disabling them.
exec : allow remote users to execute commands on a host without needing to log in. Exposes remote user passwords on the network, thus highly insecure. We recommend disabling the service.
finger : allows remote users to use the finger utility to obtain information about arbitrary users on a host. Considered highly insecure. We recommend disabling the service or using a more secure version such as cfinger.
ftp : allows remote users to transfer files to/from a host using ftp. Since user passwords are easily sniffable (they are trasmitted over the wire in cleartext), we recommend disabling the service and using instead a secure file transfer mechanism which encrypts the entire session (such as kerberized ftpd or SSH). If ftp access is a must, the service should be wrapped.
login : allows remote users to use the Berkeley rlogin utility to log in to a host without supplying a password (via the .rhosts mechanism). Considered highly insecure. We recommend disabling the service and using SSH instead. If rlogin access is a must, the service should be wrapped.
netstat : designed to provide network status information about a host to remote hosts. Considered a potential security hazard. We recommend disabling the service.
shell : allows remote users to run arbitrary commands on a host via the Berkeley rsh utility (via the trusted hosts mechanism using the .rhosts file). Considered highly insecure. We recommend disabling the service and using SSH instead. If rsh access is a must, the service should be TCP-wrapped.
systat : designed to provide status information about a host. Considered a potential security hazard. We recommend disabling the service.
telnet : allows remote users to connect to a host via telnet. Since user passwords are trasmitted over the wire in plain text and can therefore be easily sniffed, we recommend disabling the service and using instead a secure terminal access mechanism which encrypts the entire session (such as kerberized telnetd or sshd). If telnet access is a must, the service should be wrapped.
talk, ntalk : allows remote users to use talk to have a real time conversation with a user on a host. Considered a security hazard. We recommend disabling the service.
tftp : allows remote users to transfer files from a host without requiring login. Used primarily by X-terminals and routers. Considered insecure. We recommend disabling the service. If tftp access is desired, we recommend that the "-s" option be used and that the service be wrapped.
time: Used for clock synchronization. We recommend disabling the service and using xntp to synchronize your system clock to WWV.
uucp : allows remote users to transfer files to/from a host using the UUCP protocol. Unless you use UUCP, we recommend disabling the service.
RPC based services such as NFS and NIS are considered major security hazards unless you are using secure RPC. Our general recommendation is therefore against the use of NIS or NFS unless the physical network segments are protected either physically or via the use of switched hubs. All RPC based services should be disabled in inetd.conf (unless NFS/NIS must be used).
Alternatives to NIS are:
Common RPC based services defined in inetd.conf are:
rexd : allows remote users to run RPC programs on a host. Can be used to run an arbitrary shell on the host, thus highly insecure. We recommend disabling the service.
rquotad : returns quotas for a user of a local file system which is mounted by a remote machine over the NFS. We recommend disabling it.
rstatd : extracts performance statistics from the kernel for use by programs such as perfmeter. We recommend disabling it.
ruserd : is used to return a list of users on a network. We recommend disabling it.
sprayd : records the packets sent by spray, and sends a response to the originator of the packets. We recommend disabling it.
walld : used for handling rwall and shutdown requests. We recommend disabling it.
ypupdated : used for updating NIS information. Since we recommend against the use of NIS in general, this service should be disabled.
Even on a personal, normal daily use of the system should be through a non-root account. The root must have a non-trivial password. Run a password audit tool to verify that the password is not weak.
All work should be carried out in Operating Systems and Internet Security (OSIS) Lab, 429 Russ. Use any of the PCs numbered 19 to 30. No other WSU facilities are allowed.
Objective: Configure a new deliberately mis-configured install of Linux on a lab PC properly. Find and fix at least six (6) mis-configured items among the categories listed below. For every additional problem you found and fixed, you will earn bonus points. Any number > 0 of changes in a single file will count as one item of change.
Because this is only a lab experiment and because you may not be conversant with the needed background, you may exclude TFTP, and sendmail related issues.
This lab deals with only the Linux OS, but similar configuration details apply to NT. You will be configuring a system that whose partition shares the hard disk that contains other OS. You will login as root. The root password will be announced in class. Do not reveal this password to anyone.
Check.pl is a Perl script that looks through your entire file system, (or just the directory you tell it to) for suid, sgid, sticky, and writeable files. [Download check.pl]
check.pl. Use any of the PCs
numbered 19 to 30.Turn in a Lab Report. It should include one shell script containing all the commands that accomplish the changes you made. Accompany this script with a changes.txt file explaining the changes (what and why) in configuration you made. No witness report is needed.
| 04/17/01 01:15:02 PM |
| Open Content Copyright © 2000 pmateti@cs.wright.edu |