c-- styles for logos and headline links do not modify internet, red, or black styles -->
|
|
|
|
|
|
The operation of a web server raises several security
issues. Here we look at them in general terms; later on, we will discuss the
necessary code in detail. We are no more anxious to have unauthorized people in our
computer than to have unauthorized people in our house. In the ordinary way, a
desktop PC is pretty secure. An intruder would have to get physically into
your house or office to get at the information in it or to damage it. However,
once you connect a telephone line, it's as if you moved your house to a street
with 30 million close neighbors (not all of them desirable), tore your front
door off its hinges, and went out leaving the lights on and your children in
bed. A complete discussion of computer security would fill a library.
However, the meat of the business is as follows. We want to make it impossible
for strangers to copy, alter, or erase any of our data files. We want to
prevent strangers from running any unapproved programs on our machine. Just as
important, we want to prevent our friends and legitimate users from making
silly mistakes that may have consequences as serious as deliberate vandalism.
For instance, they can execute the command: and delete all their own files and subdirectories, but they
won't be able to execute this dramatic action in anyone else's area. One hopes
no one would be as silly as that, but subtler mistakes can be as damaging.
As far as the system designer is concerned, there is not a lot
of difference between villainy and willful ignorance. Both must be guarded
against. We look at basic security as it applies to a system with a
number of terminals that might range from 2 to 10,000, and then see how it can
be applied to a web server. We assume that a serious operating system such as
Unix is running. We do not include Win32 in this chapter, even though Apache now
runs on it, because it is our opinion that if you care about security you
should not be using Win32. That is not to say that Win32 has no security, but
it is poorly documented, understood by very few people, and constantly
undermined by bugs and dubious practices (such as advocating ActiveX downloads
from the Web). The basic idea of standard Unix security is that every operation
on the computer is commanded by a known person who can be held responsible for
his or her actions. Everyone using the computer has to log in so the computer
knows who he or she is. Users identify themselves with unique passwords that
are checked against a security database maintained by the administrator. On
entry, each person is assigned to a group of people with similar security
privileges; on a properly secure system, every action the user makes is
logged. Every program and every data file on the machine also belongs to a
security group. The effect of the security system is that a user can run only
a program available to his or her security group, and that program can access
only files that are also available to the user's group. In this way, we can keep the accounts people from fooling with
engineering drawings, and the salespeople are unable to get into the accounts
area to massage their approved expense claims. Of course, there has to be someone with the authority to go
everywhere and alter everything; otherwise, the system would never get set up
in the first place. This person is the superuser, who logs in as root using the top-secret password pencilled on the wall
over the system console. He is essential, but because of his awesome powers,
he is a very worrying person to have around. If an enemy agent successfully
impersonates your head of security, you are in real trouble. And, of course, this is exactly the aim of the wolf: to get
himself into the machine with superuser's privileges so that he can run any
program. Failing that, he wants at least to get in with privileges higher than
those to which he is entitled. If he can do that, he can potentially delete
data, read files he shouldn't, and collect passwords to other, more valuable,
systems. Our object is to see that he doesn't.
Peter Laurie, Ben's father, is a freelance journalist who
has written several computer books. At one time, he was the editor
of Practical Computing magazine. |
Apache Security
|