File: WISHLIST

package info (click to toggle)
tripwire 2.3.1.2.0-4
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 5,876 kB
  • ctags: 6,896
  • sloc: cpp: 57,709; sh: 1,295; perl: 1,238; yacc: 497; lex: 356; makefile: 269; ansic: 10
file content (134 lines) | stat: -rwxr-xr-x 7,086 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
Tripwire TODO/Wish List 
Date:   July 11, 2000
Author: Matthew Brinkley
Edit's: rjf

===============================================================================
1. Cool Features
===============================================================================
* Facilitate porting code to other platforms by either integrating autoconf 
or writing our own platform.h auto-configuration script.

* XML policy file

* Give twprint the ability to print report files and database entries in XML. 
Also, it would be cool to import/export databases as XML, csv, or something 
similar 

* twprint should be able to print individual entries from a database file 

* I once wrote a small program that allowed you to check out a tripwire 
database's contents through an interactive shell. You could traverse it just 
like a file system and print out the attributes of individual entries. It 
would be nice if this were included in the actual product (I think it is just 
#ifdefed out right now) 

* Scripting language interface for Tripwire report and database files, and 
maybe core tripwire functionality (like generate database, integrity check, 
etc.). I think perl, python, and maybe java would be a cool start. 

* Tripwire SNMP integration ... similar to email notification and syslog 
writing; each time an integrity check is run, tripwire sends the report 
summary as an SNMP alert.

* The ability to search a tripwire database for specific values, such as 
specific property values, file names, etc. Note that this might be either 
hard to implement or really slow because we are not indexing any of the 
fields in the database ... maybe this means we also add the ability to create 
indexes on tripwire databases?

* Proactive database update: this can be used when files have changed in a 
known way (i.e. new software installed) and one wants to notify tripwire of 
the change and update the database before the violations are caught in the 
next integrity check. (Implementation note: This is dangerous because the 
file can change between the time the authorized change happens and the 
tripwire database is updated. One possible solution to this is having a 
"verbose" mode that prints out all of the values being integrated into the 
database, so an anal tripwire user can scan the modify times or MD5s and make 
sure they look reasonable.)

* Report file naming: as we all know, there are many problems associated with 
naming reports based on the current date/time. I think tripwire should act 
like the HQ Agent and write the report with a well-known file name and then 
copy it over to "filename-DATE" if the user wants a history of reports. That 
way, it is always obvious what the most recent report file is. It would also 
be cool if one could specify report names with $DATE on the command line. If 
more than one type of integrity check were being run on a system (such as 
hourly checks and daily checks), this would allow the reports to be named 
differently but still contain the date stamp indicating what time they were 
run at.

* The ability to compare two database or subsets of two databases. Also, 
the ability to "rename" the root directories when comparing. This would 
facilitate integrity checking the installation of a software package on 
many machines, even if it is installed in different locations on each 
machine. This would help tripwire function as a "policy conformance" tool.

* Wildcard support in policy files

* (maybe) Make the individual genre code (fs, ntfs, ntreg) live in a 
separate dll/so and provide an SDK or cookbook for people to implement 
their own genres.

* A GUI configuration file editor

* A GUI policy file editor, maybe with some functionality to make authoring 
policies easier (code templates, rule wizards, syntax hilighting, etc.)

* A streamlined way to change the site or local passphrase, automatically 
decrypting and re-encrypting all data files as necessary

===============================================================================
2. Code base cleanup
===============================================================================
* Remove iFCOVisitor and all derived classes from the code base (dead code)

* Clean up unit tests, system initialization, and error reporting (error buckets)

* Get parser working with flex/bison

* Get locale and other i18n code synced with Brian's most recent round of changes

* Implement shrinking the database file (block file) when the database shrinks 
greatly from a high water mark. I think the code is in place, it is just 
commented out.

* Make it possible to free FCO Name nodes, either through a special compilation 
directive or providing a garbage collection method. I think the latter is 
probably the easiest way to go.

===============================================================================
3. "Out there" ideas
===============================================================================
* Keep a revision history in the database. This would support the 
"trend analysis" people have been talking about, as well as allowing you to 
roll back changes and see all of the changes that happened in the past n days 
(to prevent a mischievous soul from updating your database behind your back)

* Related to the previous idea, store "user names" with all database changes, 
so you can see not only when something was changed, but also by whom

* (NOTE: this could probably be explained much better <g>) Problem: Tripwire 
does not catch the following user errors: update a report file into the old 
database, update an earlier report file than was previously used to update 
the database, update a database with the same report twice. Actually, it 
probably would error out in all of these cases, but there is no good error 
message, and the user doesn't know it is the wrong thing to do until they try 
to do it. Also, there is no way to programmatically tell (i.e. by the HQ Agent) 
whether a given report file has been integrated into the database and is thus 
"meaningful". Solution: Associate a Unique Identifier with all newly created 
databases. Also associate a sequence number with it. Each time an integrity 
check is run, the sequence number is incremented and associated with the newly 
created report file. Each time a report is integrated back into the database, 
another number called the "revision number" is written into the database. 
Thus, at any given time you can tell which report in a collection is the most 
recent, and which reports have been written into the database. 

* I once got this little demo program from ntinternals.com that installed a 
file system device driver and hooked all OS calls to open, read, and write 
files or registry entries. It would just spew what it found to a window, but 
I was thinking it would be cool to make something like this the basis of 
"Real Time Tripwire". You specify a policy in much the same way that you 
specify policies for tripwire now. Each time a kernel file call was hooked, 
tripwire would see if the call would violate a rule, and takes some action 
if it would.