]>
git.ipfire.org Git - people/teissler/ipfire-2.x.git/blob - html/cgi-bin/tripwire.cgi
5 # This code is distributed under the terms of the GPL
10 # enable only the following on debugging purpose
12 use CGI
::Carp
'fatalsToBrowser';
14 require '/var/ipfire/general-functions.pl';
15 require "${General::swroot}/lang.pl";
16 require "${General::swroot}/header.pl";
18 my %tripwiresettings = ();
22 my $errormessage = "";
23 my @Logs = qx(ls
/var/ipfire
/tripwire/report
/);
24 my $Log =$Lang::tr
{'no log selected'};
26 ############################################################################################################################
27 ################################################# Tripwire Default Variablen ################################################
29 $tripwiresettings{'ROOT'} = '/usr/sbin';
30 $tripwiresettings{'POLFILE'} = '/var/ipfire/tripwire/tw.pol';
31 $tripwiresettings{'DBFILE'} = '/var/ipfire/tripwire/$(HOSTNAME).twd';
32 $tripwiresettings{'REPORTFILE'} = '/var/ipfire/tripwire/report/$(HOSTNAME)-$(DATE).twr';
33 $tripwiresettings{'SITEKEYFILE'} = '/var/ipfire/tripwire/site.key';
34 $tripwiresettings{'LOCALKEYFILE'} = '/var/ipfire/tripwire/$(HOSTNAME)-local.key';
35 $tripwiresettings{'EDITOR'} = '/usr/bin/vi';
36 $tripwiresettings{'LATEPROMPTING'} = 'false';
37 $tripwiresettings{'LOOSEDIRECTORYCHECKING'} = 'false';
38 $tripwiresettings{'MAILNOVIOLATIONS'} = 'false';
39 $tripwiresettings{'EMAILREPORTLEVEL'} = '3';
40 $tripwiresettings{'REPORTLEVEL'} = '3';
41 $tripwiresettings{'MAILMETHOD'} = 'SENDMAIL';
42 $tripwiresettings{'SMTPHOST'} = 'ipfire.myipfire.de';
43 $tripwiresettings{'SMTPPORT'} = '25';
44 $tripwiresettings{'SYSLOGREPORTING'} = 'false';
45 $tripwiresettings{'MAILPROGRAM'} = '/usr/sbin/sendmail -oi -t';
46 $tripwiresettings{'SITEKEY'} = 'IPFire';
47 $tripwiresettings{'LOCALKEY'} = 'IPFire';
48 $tripwiresettings{'ACTION'} = '';
50 ############################################################################################################################
51 ######################################################### Tripwire HTML Part ###############################################
53 &Header
::showhttpheaders
();
54 &Header
::getcgihash
(\
%tripwiresettings);
55 &Header
::openpage
('Tripwire', 1, '');
56 &Header
::openbigbox
('100%', 'left', '', $errormessage);
58 ############################################################################################################################
59 ############################################### Tripwire Config Datei erstellen ############################################
61 if ($tripwiresettings{'ACTION'} eq $Lang::tr
{'save'})
63 system("/usr/local/bin/tripwirectrl readconfig");
64 open (FILE
, ">${General::swroot}/tripwire/tw.cfg") or die "Can't save tripwire config: $!";
69 ROOT =$tripwiresettings{'ROOT'}
70 POLFILE =$tripwiresettings{'POLFILE'}
71 DBFILE =$tripwiresettings{'DBFILE'}
72 REPORTFILE =$tripwiresettings{'REPORTFILE'}
73 SITEKEYFILE =$tripwiresettings{'SITEKEYFILE'}
74 LOCALKEYFILE =$tripwiresettings{'LOCALKEYFILE'}
75 EDITOR =$tripwiresettings{'EDITOR'}
76 LATEPROMPTING =$tripwiresettings{'LATEPROMPTING'}
77 LOOSEDIRECTORYCHECKING =$tripwiresettings{'LOOSEDIRECTORYCHECKING'}
78 MAILNOVIOLATIONS =$tripwiresettings{'MAILNOVIOLATIONS'}
79 EMAILREPORTLEVEL =$tripwiresettings{'EMAILREPORTLEVEL'}
80 REPORTLEVEL =$tripwiresettings{'REPORTLEVEL'}
81 MAILMETHOD =$tripwiresettings{'MAILMETHOD'}
82 SMTPHOST =$tripwiresettings{'SMTPHOST'}
83 SMTPPORT =$tripwiresettings{'SMTPPORT'}
84 SYSLOGREPORTING =$tripwiresettings{'SYSLOGREPORTING'}
85 MAILPROGRAM =$tripwiresettings{'MAILPROGRAM'}
91 &General
::writehash
("${General::swroot}/tripwire/settings", \
%tripwiresettings);
92 system("/usr/local/bin/tripwirectrl lockconfig");
95 ############################################################################################################################
96 ################################################## Sicherheitsabfrage für CGI ##############################################
98 if ($tripwiresettings{'ACTION'} eq 'globalreset')
102 <table width='95%' cellspacing='0'>
103 <tr><td bgcolor='${Header::table1colour}' colspan='2' align='center'><b>$Lang::tr{'resetglobals'}</b>
104 <tr><td colspan='2' align='center'><font color=red>$Lang::tr{'defaultwarning'}<br /><br /></font></td></tr>
105 <tr><td align='right' width='50%'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
106 $Lang::tr{'yes'} <input type='image' alt='$Lang::tr{'yes'}' src='/images/edit-redo.png' />
107 <input type='hidden' name='ACTION' value='globalresetyes' /></form></td>
108 <td align='left' width='50%'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
109 <input type='image' alt='$Lang::tr{'no'}' src='/images/dialog-error.png' /> $Lang::tr{'no'}
110 <input type='hidden' name='ACTION' value='cancel' /></form></td>
117 if ($tripwiresettings{'ACTION'} eq 'generatepolicypw')
121 <table width='95%' cellspacing='0'>
122 <tr><td bgcolor='${Header::table1colour}' colspan='2' align='center'><b>$Lang::tr{'generatepolicy'}</b>
123 <tr><td colspan='2' align='center'><font color=red>$Lang::tr{'tripwirewarningpolicy'}<br /><br /></font></td></tr>
124 <tr><td align='left' width='40%'><form method='post' action='$ENV{'SCRIPT_NAME'}'>$Lang::tr{'sitekey'}</td><td align='left'><input type='password' name='SITEKEY' value='$tripwiresettings{'SITEKEY'}' size="30" /></td></tr>
125 <tr><td align='right' width='50%'>
126 $Lang::tr{'yes'} <input type='image' alt='$Lang::tr{'yes'}' src='/images/edit-redo.png' />
127 <input type='hidden' name='ACTION' value='generatepolicy' /></form></td>
128 <td align='left' width='50%'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
129 <input type='image' alt='$Lang::tr{'no'}' src='/images/dialog-error.png' /> $Lang::tr{'no'}
130 <input type='hidden' name='ACTION' value='cancel' /></form></td>
137 if ($tripwiresettings{'ACTION'} eq 'policyresetpw')
141 <table width='95%' cellspacing='0'>
142 <tr><td bgcolor='${Header::table1colour}' colspan='2' align='center'><b>$Lang::tr{'resetpolicy'}</b>
143 <tr><td colspan='2' align='center'><font color=red>$Lang::tr{'tripwirewarningpolicy'}<br /><br /></font></td></tr>
144 <tr><td align='left' width='40%'><form method='post' action='$ENV{'SCRIPT_NAME'}'>$Lang::tr{'sitekey'}</td><td align='left'><input type='password' name='SITEKEY' value='$tripwiresettings{'SITEKEY'}' size="30" /></td></tr>
145 <tr><td align='right' width='50%'>
146 $Lang::tr{'yes'} <input type='image' alt='$Lang::tr{'yes'}' src='/images/edit-redo.png' />
147 <input type='hidden' name='ACTION' value='resetpolicyyes' /></form></td>
148 <td align='left' width='50%'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
149 <input type='image' alt='$Lang::tr{'no'}' src='/images/dialog-error.png' /> $Lang::tr{'no'}
150 <input type='hidden' name='ACTION' value='cancel' /></form></td>
157 if ($tripwiresettings{'ACTION'} eq 'updatedatabasepw')
161 <table width='95%' cellspacing='0'>
162 <tr><td bgcolor='${Header::table1colour}' colspan='2' align='center'><b>$Lang::tr{'updatedatabase'}</b>
163 <tr><td colspan='2' align='center'><font color=red>$Lang::tr{'tripwirewarningdatabase'}<br /><br /></font></td></tr>
164 <tr><td align='left' width='40%'><form method='post' action='$ENV{'SCRIPT_NAME'}'>$Lang::tr{'localkey'}</td><td align='left'><input type='password' name='LOCALKEY' value='$tripwiresettings{'LOCALKEY'}' size="30" /></td></tr>
165 <tr><td align='right' width='50%'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
166 $Lang::tr{'yes'} <input type='image' alt='$Lang::tr{'yes'}' src='/images/edit-redo.png' />
167 <input type='hidden' name='ACTION' value='updatedatabaseyes' /></form></td>
168 <td align='left' width='50%'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
169 <input type='image' alt='$Lang::tr{'no'}' src='/images/dialog-error.png' /> $Lang::tr{'no'}
170 <input type='hidden' name='ACTION' value='cancel' /></form></td>
176 if ($tripwiresettings{'ACTION'} eq 'keyreset')
180 <table width='95%' cellspacing='0'>
181 <tr><td bgcolor='${Header::table1colour}' colspan='2' align='center'><b>$Lang::tr{'keyreset'}</b>
182 <tr><td colspan='2' align='center'><font color=red>$Lang::tr{'tripwirewarningkeys'}<br /><br /></font></td></tr>
183 <tr><td align='right' width='50%'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
184 $Lang::tr{'yes'} <input type='image' alt='$Lang::tr{'yes'}' src='/images/edit-redo.png' />
185 <input type='hidden' name='ACTION' value='keyresetyes' /></form></td>
186 <td align='left' width='50%'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
187 <input type='image' alt='$Lang::tr{'no'}' src='/images/dialog-error.png' /> $Lang::tr{'no'}
188 <input type='hidden' name='ACTION' value='cancel' /></form></td>
195 if ($tripwiresettings{'ACTION'} eq 'generatekeys')
199 <table width='95%' cellspacing='0'>
200 <tr><td bgcolor='${Header::table1colour}' colspan='2' align='center'><b>$Lang::tr{'generatekeys'}</b>
201 <tr><td colspan='2' align='center'><font color=red>$Lang::tr{'tripwirewarningkeys'}<br /><br /></font></td></tr>
202 <tr><td align='right' width='50%'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
203 $Lang::tr{'yes'} <input type='image' alt='$Lang::tr{'yes'}' src='/images/edit-redo.png' />
204 <input type='hidden' name='ACTION' value='generatekeysyes' /></form></td>
205 <td align='left' width='50%'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
206 <input type='image' alt='$Lang::tr{'no'}' src='/images/dialog-error.png' /> $Lang::tr{'no'}
207 <input type='hidden' name='ACTION' value='cancel' /></form></td>
214 ############################################################################################################################
215 ######################################################## Tripwire Funktionen ###############################################
217 if ($tripwiresettings{'ACTION'} eq 'globalresetyes'){system("/usr/local/bin/tripwirectrl globalreset");}
218 if ($tripwiresettings{'ACTION'} eq 'generatekeysyes'){system("/usr/local/bin/tripwirectrl keys $tripwiresettings{'SITEKEY'} $tripwiresettings{'LOCALKEY'}");$tripwiresettings{'SITEKEY'} = 'IPFire';$tripwiresettings{'LOCALKEY'} = 'IPFire';}
219 if ($tripwiresettings{'ACTION'} eq 'keyresetyes'){system("/usr/local/bin/tripwirectrl keys IPFire IPFire");$tripwiresettings{'SITEKEY'} = 'IPFire';$tripwiresettings{'LOCALKEY'} = 'IPFire';}
220 if ($tripwiresettings{'ACTION'} eq 'resetpolicyyes'){system("/usr/local/bin/tripwirectrl resetpolicy tripwiresettings{'SITEKEY'}");$tripwiresettings{'SITEKEY'} = 'IPFire';}
221 if ($tripwiresettings{'ACTION'} eq 'generatepolicyyes'){system("/usr/local/bin/tripwirectrl generatepolicy $tripwiresettings{'SITEKEY'}");$tripwiresettings{'SITEKEY'} = 'IPFire';}
222 if ($tripwiresettings{'ACTION'} eq 'updatedatabaseyes'){system("/usr/local/bin/tripwirectrl updatedatabase $tripwiresettings{'LOCALKEY'}");$tripwiresettings{'LOCALKEY'} = 'IPFire';}
223 if ($tripwiresettings{'ACTION'} eq 'generatereport'){system("/usr/local/bin/tripwirectrl generatereport");}
225 ############################################################################################################################
226 ##################################################### Tripwire globale Optionen ############################################
228 &Header
::openbox
('100%', 'center', 'Tripwire');
233 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
234 <table width='95%' cellspacing='0'>
235 <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>$Lang::tr{'basic options'}</b></td></tr>
236 <tr><td align='left' width='40%'>$Lang::tr{'emailreportlevel'}</td><td align='left'><input type='text' name='EMAILREPORTLEVEL' value='$tripwiresettings{'EMAILREPORTLEVEL'}' size="30" /></td></tr>
237 <tr><td align='left' width='40%'>$Lang::tr{'reportlevel'}</td><td align='left'><input type='text' name='REPORTLEVEL' value='$tripwiresettings{'REPORTLEVEL'}' size="30" /></td></tr>
238 <tr><td align='left' width='40%'>$Lang::tr{'mailmethod'}</td><td align='left'><input type='text' name='MAILMETHOD' value='$tripwiresettings{'MAILMETHOD'}' size="30" /></td></tr>
239 <tr><td align='left' width='40%'>$Lang::tr{'smtphost'}</td><td align='left'><input type='text' name='SMTPHOST' value='$tripwiresettings{'SMTPHOST'}' size="30" /></td></tr>
240 <tr><td align='left' width='40%'>$Lang::tr{'smtpport'}</td><td align='left'><input type='text' name='SMTPPORT' value='$tripwiresettings{'SMTPPORT'}' size="30" /></td></tr>
241 <tr><td align='left' width='40%'>$Lang::tr{'mailprogramm'}</td><td align='left'><input type='text' name='MAILPROGRAM' value='$tripwiresettings{'MAILPROGRAM'}' size="30" /></td></tr>
244 <table width='10%' cellspacing='0'>
245 <tr><td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
246 <input type='hidden' name='ACTION' value=$Lang::tr{'save'} />
247 <input type='image' alt='$Lang::tr{'save'}' src='/images/media-floppy.png' /></form></td>
248 <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
249 <input type='hidden' name='ACTION' value='globalreset' />
250 <input type='image' alt='$Lang::tr{'reset'}' src='/images/reload.gif' /></form></td>
251 <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
252 <input type='hidden' name='ACTION' value='globalcaption' />
253 <input type='image' alt='$Lang::tr{'caption'}' src='/images/help-browser.png' /></form></td></tr>
258 if ($tripwiresettings{'ACTION'} eq 'globalcaption')
262 <table width='95%' cellspacing='0'>
263 <tr><td align='center' colspan='2'><b>$Lang::tr{'caption'}</b></td></tr>
264 <tr><td align='right' width='33%'><img src='/images/media-floppy.png' /></td><td align='left'>$Lang::tr{'save settings'}</td></tr>
265 <tr><td align='right' width='33%'><img src='/images/reload.gif' /></td><td align='left'>$Lang::tr{'restore settings'}</td></tr>
274 ############################################################################################################################
275 ################################################### Tripwire Init Policy and keygen ########################################
277 &Header
::openbox
('100%', 'center', $Lang::tr
{'generate tripwire keys and init'});
282 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
283 <table width='95%' cellspacing='0'>
284 <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>$Lang::tr{'keys'}</b></td></tr>
285 <tr><td align='left' width='40%'>$Lang::tr{'sitekey'}</td><td align='left'><input type='password' name='SITEKEY' value='$tripwiresettings{'SITEKEY'}' size="30" /></td></tr>
286 <tr><td align='left' width='40%'>$Lang::tr{'localkey'}</td><td align='left'><input type='password' name='LOCALKEY' value='$tripwiresettings{'LOCALKEY'}' size="30" /></td></tr>
289 <table width='10%' cellspacing='0'>
290 <tr><td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
291 <input type='hidden' name='ACTION' value='generatekeys'/>
292 <input type='image' alt='$Lang::tr{'generatekeys'}' src='/images/system-lock-screen.png' /></form></td>
293 <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
294 <input type='hidden' name='ACTION' value='keyreset' />
295 <input type='image' alt='$Lang::tr{'reset'}' src='/images/reload.gif' /></form></td>
296 <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
297 <input type='hidden' name='ACTION' value='keycaption' />
298 <input type='image' alt='$Lang::tr{'caption'}' src='/images/help-browser.png' /></form></td></tr>
303 if ($tripwiresettings{'ACTION'} eq 'keycaption')
307 <table width='95%' cellspacing='0'>
308 <tr><td align='center' colspan='2'><b>$Lang::tr{'caption'}</b></td></tr>
309 <tr><td align='right' width='33%'><img src='/images/system-lock-screen.png' /></td><td align='left'>$Lang::tr{'generatekeys'}</td></tr>
310 <tr><td align='right' width='33%'><img src='/images/reload.gif' /></td><td align='left'>$Lang::tr{'keyreset'}</td></tr>
318 ############################################################################################################################
319 ################################################# Tripwire general functions ###############################################
321 &Header
::openbox
('100%', 'center', $Lang::tr
{'tripwire functions'});
326 <table width='95%' cellspacing='0'>
327 <tr><td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
328 <input type='hidden' name='ACTION' value='generatepolicypw'/>
329 <input type='image' alt='$Lang::tr{'generatepolicy'}' src='/images/document-new.png' /></form></td>
330 <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
331 <input type='hidden' name='ACTION' value='policyresetpw' />
332 <input type='image' alt='$Lang::tr{'resetpolicy'}' src='/images/reload.gif' /></form></td>
333 <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
334 <input type='hidden' name='ACTION' value='generatereport' />
335 <input type='image' alt='$Lang::tr{'generatereport'}' src='/images/document-properties.png' /></form></td>
336 <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
337 <input type='hidden' name='ACTION' value='updatedatabasepw' />
338 <input type='image' alt='$Lang::tr{'updatedatabase'}' src='/images/network-server.png' /></form></td>
339 <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
340 <input type='hidden' name='ACTION' value='policycaption' />
341 <input type='image' alt='$Lang::tr{'caption'}' src='/images/help-browser.png' /></form></td></tr>
345 if ($tripwiresettings{'ACTION'} eq 'policycaption')
349 <table width='95%' cellspacing='0'>
350 <tr><td align='center' colspan='2'><b>$Lang::tr{'caption'}</b></td></tr>
351 <tr><td align='right' width='33%'><img src='/images/document-new.png' /></td><td align='left'>$Lang::tr{'generatepolicy'}</td></tr>
352 <tr><td align='right' width='33%'><img src='/images/reload.gif' /></td><td align='left'>$Lang::tr{'resetpolicy'}</td></tr>
353 <tr><td align='right' width='33%'><img src='/images/document-properties.png' /></td><td align='left'>$Lang::tr{'generatereport'}</td></tr>
354 <tr><td align='right' width='33%'><img src='/images/network-server.png' /></td><td align='left'>$Lang::tr{'updatedatabase'}</td></tr>
362 ############################################################################################################################
363 ####################################################### Tripwire Init Policy ###############################################
365 &Header
::openbox
('100%', 'center', $Lang::tr
{'tripwire reports'});
369 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
370 <table width='95%' cellspacing='0'>
371 <tr><td bgcolor='${Header::table1colour}' colspan='3' align='left'><b>$Lang::tr{'log view'}</b></td></tr>
372 <tr><td colspan='3' align='left'><br /></td></tr>
373 <tr><td align='left'><select name='LOG' style="width: 500px">
376 foreach my $log (@Logs) {chomp $log;print"<option value='$log'>$log</option>";}
379 </select></td><td align='left'><input type='hidden' name='ACTION' value='showlog' /><input type='image' alt='view Log' src='/images/format-justify-fill.png' /></td></tr>
384 if ($tripwiresettings{'ACTION'} eq 'showlog')
386 $Log = qx(/usr/local/bin/tripwirectrl tripwirelog
$tripwiresettings{'LOG'});
387 #$Log=~s/\n/<br \/>/g;
390 <table width='95%' cellspacing='0'>
391 <tr><td><br /></td></tr>
392 <tr><td><pre>LOG - $Log </pre></td></tr>
393 <tr><td><br /></td></tr>
394 <tr><td align=center>$tripwiresettings{'LOG'}</td></tr>
403 &Header
::closebigbox
();
404 &Header
::closepage
();