If we can't change UNIX and the environment in which it runs, the next best thing is to learn about how to protect the system as best we can. That's the goal of this book. If we can provide information to users and administrators in a way that helps them understand the way things work and how to use the safeguards, then we should be moving in the right direction. After all, these areas seem to be where many of the problems originate.
Unfortunately, knowing how things work on the system is not enough. Because of the UNIX design, a single flaw in a UNIX system program can compromise the security of the operating system as a whole. This is why vigilance and attention are needed to keep a system running securely: after a hole is discovered, it must be fixed. Furthermore, in this age of networked computing, that fix must be made widely available, lest some users who have not updated their software fall victim to more up-to-date attackers.
NOTE: Although this book includes numerous examples of past security holes in the UNIX operating system, we have intentionally not provided the reader with an exhaustive list of the means by which a machine can be penetrated. Not only would such information not necessarily help to improve the security of your system, but it might place a number of systems running older versions of UNIX at additional risk.
Even properly configured UNIX systems are still very susceptible to denial of service attacks, where one user can make the system unusable for everyone else by "hogging" a resource or degrading system performance. In most circumstances, however, administrators can track down the person who is causing the interruption of service and deal with that person directly. We'll talk about denial of service attacks in Chapter 25, Denial of Service Attacks and Solutions.
First of all, we start by discussing basic issues of policy and risk in Chapter 2. Before you start setting permissions and changing passwords, make sure you understand what you are protecting and why. You should also understand what you are protecting against. Although we can't tell you all of that, we can outline some of the questions you need to answer before you design your overall security plan.
Throughout the rest of the book, we'll be explaining UNIX structures and mechanisms that can affect your overall security. We concentrate on the fundamentals of the way the system behaves so you can understand the basic principles and apply them in your own environment. We have specifically not presented examples and suggestions of where changes in the source code can fix problems or add security. Although we know of many such fixes, most UNIX sites do not have access to source code. Most system administrators do not have the necessary expertise to make the required changes. Furthermore, source code changes, as do configurations. A fix that is appropriate in March 1996 may not be desirable on a version of the operating system shipped the following September. Instead, we present principles, with the hope that they will give you better long-term results than one-time custom modifications.
We suggest that you keep in mind that even if you take everything to heart that we explain in the following chapters, and even if you keep a vigilant watch over your systems, you may still not fully protect your assets. You need to educate every one of your users about good security and convince them to practice what they learn. Computer security is a lonely, frustrating occupation if it is practiced as a case of "us" (information security personnel) versus "them" (the rest of the users). If you can practice security as "all of us" (everyone in the organization) versus "them" (people who would breach our security), the process will be much easier. You also need to help convince vendors to produce safer code. If we all put our money behind our stated concerns, maybe the vendors will finally catch on.