Proposed schema for the backend database for Nessus

Javier Fernandez-Sanguino <[email protected]>
Newsgroups gmane.comp.security.nessus.devel
Organization Germinus
Message-ID <[email protected]>
More food for thought (or for discussion, whatever you prefer)

I have designed a schema (E/R diagram) based on the discussion on the 
list and my original ideas. I would like to know if this one holds all 
the information a user might pretty much need. Does it?  If it does I 
can turn into SQL and start coding around^Winside Nessus to test it a bit.

Some things I want to mark:

- the ExecutedPlugins table is there in order to note down all plugins 
that have been executed in a given session ID regardless of wether or 
not a vulnerability has been discovered

- I have included a KnowledgeBase table which is pretty much free-text. 
The information in the Knowledgebase is probably redundant with the 
(organised) information in the rest of the schema. I still haven't got 
around to analyse the KB code, though, and I want to take a proper look 
at it.

- I'm not sure if user information (and location, i.e. IP address from 
the nessus-client) should separated from the session information. The 
Session table should probably be merged with the UserSessions table.

- The DetectedService is a separate table intented for port-scanner 
plugins. Notice that an open port (of whatever protocol) is not in 
itself a vulnerability. This information, however, is useful for 
analysis (i.e. to answer questions like: which servers have port 389 
(ldap) open in my network?)

- Translations are not considered (yet) because translators of plugins 
would just need to drop-in replacements of the Nessus-plugin table 
changing the description/solution information. Reports generated then 
would include the translated descriptions.

You will see there is no such thing as a "report" in this schema. Other 
proposals (from front-ends) include directly the report information into 
the database. I'm not doing this since it is already redundant. If you 
check carefully, a report on a given session is just all the 
vulnerabilities that have been detected in a given session. I.e.

SELECT Nessus-plugin.Description, Vulnerability.Type, 
Vulnerability.AdditionalInformation from Vulnerability, ExecutedPlugins, 
NessusPlugin where Vulnerability.ExecutionID = 
ExecutedPlugins.ExecutionID AND 
ExecutedPlugins.PluginID=NessusPlugin.PluginID AND 
ExecutedPlugins.SessionID="A GIVEN SESSION"

Does this make sense at all?  :-)

Comments on the schema appreciated.

Regards

Javi
Nessus-database-schema.png (image/png, 10.5 KB) - not displayed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.