Give up on the notion that computer security can be improved by putting more people in prison.
The temptation to try and "beat the system" that is often felt by hackers and crackers, and even just regular computer users, can be enormous. People will succumb to the temptation to pirate copyrighted material, to disable copy protection on software, and to try and break into other people's computer systems.
Meanwhile, the costs associated with the war on hackers are unreasonable: the PATRIOT act, the DMCA and similar bills now working their way through
That's why I think it's time to adopt a "harm reduction" approach to computer security. Traditionally,
For example, the spread of HIV and hepatitis is one serious consequence of drug abuse. A harm reduction approach implements needle exchange programs to limit the spread of disease. It also treats drug addiction as a medical rather than legal problem, acknowledging that people have flaws.
Let's make the same concession in computer security: People will never be perfect, and software will never be perfect. So how can we reduce the harm caused to our information security by crackers? In my last column, I proposed several harm reduction strategies, including writing in safer programming languages and using tools like Immunix's StackGuard.
Since then, several readers have steered me towards
OpenBSD also uses chroot more widely. Chroot is a method of keeping an application in a small portion of the filesystem. Though not originally designed for use as a security technique --- it was written to make the BSD install process work more smoothly --- network daemons can run as an unprivileged user in a part of the directory tree that limits access to critical files. If a cracker gains remote access through a chrooted daemon, it is difficult (though not impossible) to gain control of the rest of the system.
Web servers, name servers, and database servers can all be chrooted with relative ease. However, few Linux and Unix installations do so by default. Using chroot is
A step far beyond chroot is to run a virtual private server using
UML can be somewhat tricky to set up and configure properly, and trickier still to manage well: if you're running a bunch of UML instances on a single system, installing system patches can be tricky. However, each virtual server can be easily reinstalled remotely with little to no risk of rendering the server unbootable.
Hackers who have broken into a UML server can be carefully tracked and monitored. For this reason, as well as due to the ease of reinstallation, people running
Again, it may be possible to "break out" of a UML process and gain control of the host system, but this is an order of magnitude more difficult than breaking out of a chrooted jail. It is difficult enough that only the most experienced crackers are likely to be able to do so. Because the partition file can be backed up or mounted outside of the system, and because a system can run an arbitrary number of UML processes, a reinstall can occur very rapidly following an intrusion into the system.
Chroot and UML will not stop hackers from breaking into systems. However, they will reduce the damage a hacker can do following a break-in. They can also make it easier to recover following an intrusion. All this without damaging the civil liberties of all Americans.