Chapter 3. Hardening Linux
There's tremendous value in isolating your
bastion
(Internet-accessible) hosts in a DMZ network, protected by a
well-designed firewall and other external controls. And just as a
good DMZ is designed assuming that sooner or later, even
firewall-protected hosts may be compromised, good bastion server
design dictates that each host should be hardened as though there
were no firewall at all.
Obviously, the bastion-host services to which your firewall allows
access must be configured as securely as possible and kept up-to-date
with security patches. But that isn't enough: you
must also secure the bastion host's operating-system
configuration, disable unnecessary services — in short,
"bastionize" or
"harden" it as much as possible.
If you don't do this, you won't
have a bastion server: you'll simply have a server
behind a firewall — one that's at the mercy of
the firewall and of the effectiveness of its own
applications' security features. But if you do
bastionize it, your server can defend itself should some other host
in the DMZ be compromised and used to attack it. (As you can see,
pessimism is an important element in risk management!)
Hardening a Linux system is not a trivial
task: it's as much work to bastionize Linux as
Solaris, Windows, and other popular operating systems. This is a
natural result of having so many different types of software
available for these OSes, and at least as much variation between the
types of people who use them.
Unlike many other OSes, however, Linux gives you extremely granular
control over system and application behavior, from a high level
(application settings, user interfaces, etc.) to a very low level,
even as far down as the kernel code itself. Linux also benefits from
lessons learned over the three-decade history of Unix and Unix-like
operating systems: Unix security is extremely well understood and
well documented. Furthermore, over the course of those 30-plus years,
many powerful security tools have been developed and refined,
including chroot, sudo,
TCPwrappers, Tripwire, and shadow.
This chapter lays the groundwork for much of what follows. Whereas
most of the rest of this book is about hardening specific
applications, this chapter covers system-hardening principles and
specific techniques for hardening the core operating system.
|