Free Trial

Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.

  • Create BookmarkCreate Bookmark
  • Create Note or TagCreate Note or Tag
  • PrintPrint
Share this Page URL
Help

Foreword

Foreword

Every now and then, people ask me why I created Nessus, and more importantly why I chose this name. In Greek mythology, Nessus is a centaur whose blood-stained robe killed Hercules, while in Larry Niven's "Ringworld", Nessus is an alien from a paranoid and more evolved civilization than ours. Some people have even asked me if "Nessus" was an acronym (as in "NEtwork Security Scanner for US" or something similar). However, none of these guesses are correct, and so here is the story behind Nessus.

In 1996, at the age of 16, I finally got fed up with the constant crashes of Mac OS 7, and installed a very eclectic version of Linux on my Power Macintosh called 'MkLinux'. I basically switched from Mac OS, a fully graphical environment with Netscape, to MkLinux, which was running the twm window manager and Lynx as a web browser. I still have fond memories of that transition, where every day would bring its own share of joy and satisfaction: configuring my modem to get Internet access, getting the sound card to work, recompiling the kernel, recompiling the micro-kernel (MkLinux was Linux running on top of the MACH kernel), or getting the new releases of the kernel(s) by modem. But, the two things that struck me the most on this system was the loopback interface and the fact that multiple users could be logged in at the same time.

The multi-user approach of Linux sounded like a great invention from the perspective of a MacOS user, and a good Samaritan. The second UNIX account I created was the guest account, with no password. This account was created so that I could invite friends to log into my new powerful UNIX workstation and they would be able to test it without having to install it on their system.

The loopback interface was also great as it meant I could program network-enabled applications without having to connect to the Internet to test them. Under MacOS 7, you had to have a real network connection (modem or Ethernet) to actually test your applications. Under UNIX, I did not have to establish a phone connection to test my various programs, and that was exactly what I was looking for. In addition to this, network programming under UNIX was surprisingly easy compared to MacOS, so I started to write small applications (like a text-based email client because I could not figure out how to configure sendmail to send mail thru my ISP).

By mid-1997, I was very familiar with my now-tamed UNIX system, and I routinely went on IRC to chat with friends. One day I realized that someone had logged in using the guest account I had created and forgotten about, and attempted to wipe my whole hard drive (this attempt fortunately failed thanks to the user permissions), and so I decided that it was time to do a little checkup of my system with a tool which would tell me what an "attacker" could see from the point of view of the network. And therefore I installed SATAN, which was popular at the time.

Getting SATAN to install on a MkLinux system was no fun—MkLinux was missing a lot of the basic utilities SATAN required to work properly—like 'showmount'—so I had to wrestle for a couple of days before I could get a version which was somehow working. I ran it and I was disappointed by the results: half of the tests had not worked properly due to missing utilities, the GUI was quite confusing and the report was not as strict as I wanted it to be (it should have told me to disable more services). At the time, I was also very interested in the IT security field, so I decided that writing a new network security scanner could be a good idea. I exchanged design ideas with two friends—Jan Roudot and Philippe Langlois (who later on co-founded Qualys)—and in late 1997, I started to code a new scanner which would: be plugin based, not use any of the local Unix commands to do its job and be written in C. I also set up a real network at home with an old Sun3 workstation, and even got access to a university network to do my testing. When confronted with the need to name this program, I took a mythology encyclopedia, and decided to pick a name at random. And this is how I picked the name "Nessus". Just luck (and good luck too—had I named the project "Hephaestus", it might have been slightly less popular).

In 1998, on April 4th, I announced the availability of the initial "alpha" version of Nessus on the bugtraq mailing list, with its 50 different remote security checks. The volume of feedback I received was really unexpected. Dozens of people had downloaded Nessus, tested it and came up with improvement suggestions, and basically the project started to snowball from there. I decided to maintain and continue improving it—thus becoming some kind of monomaniac—until I got bored with it. Fortunately, Nessus is a very interesting project to work on, as its internals cover a wide range of areas—from networking issues to software parallelism. It also made me discover a wide range of software, since I had to write a plugin every time a flaw would be found. So, over six years after the initial release, I'm still not yet bored with the project—quite the opposite actually.

The only problem with Nessus is the lack of documentation—writing code is fun, documenting how it works is much less. Fortunately, this book now fills that gap and will help you to get familiar with the tool, to get the most out of it, but also to know its limitations and how to deal with them. When I read the list of authors for this book, I was thrilled to recognize so many familiar names, and I could not be happier with it. This book will not only teach you how to use Nessus, but also how Nessus works internally—why its design is done the way it is, and why that makes it both powerful and flexible to perform a wide range of network-based operations.

Enjoy the read!

Renaud Deraison

Founder of the Nessus Project

September, 2004

  • Safari Books Online
  • Create BookmarkCreate Bookmark
  • Create Note or TagCreate Note or Tag
  • PrintPrint