Starting the Excel part.
This commit is contained in:
parent
4c29612774
commit
ea2accf8f8
483
lynis_report.pl
483
lynis_report.pl
|
@ -7,6 +7,8 @@ no if $] ge '5.018', warnings => "experimental::smartmatch";
|
|||
use Term::ANSIColor;
|
||||
use Getopt::Long qw( :config no_ignore_case bundling );
|
||||
use Data::Dumper;
|
||||
#use Spreadsheet::WriteExcel;
|
||||
use Excel::Writer::XLSX;
|
||||
|
||||
my ($help,$verbose,$excel,$output);
|
||||
GetOptions(
|
||||
|
@ -21,7 +23,11 @@ if ($help) { &usage; }
|
|||
my %to_bool = ( 0 => 'false', 1 => 'true' );
|
||||
my %to_long_severity = ( 'C' => 'Critical', 'S' => 'Severe', 'H' => 'High', 'M' => 'Medium', 'L' => 'Low', 'I' => 'Informational' );
|
||||
|
||||
$output = "report.html" unless ((defined($output)) and ($output ne ""));
|
||||
if ($excel) {
|
||||
$output = 'report.xlsx' unless ((defined($output)) and ($output ne ""));
|
||||
} else {
|
||||
$output = "report.html" unless ((defined($output)) and ($output ne ""));
|
||||
}
|
||||
|
||||
my $lynis_log = '/var/log/lynis.log';
|
||||
my $lynis_report = '/var/log/lynis-report.dat';
|
||||
|
@ -112,8 +118,27 @@ delete($lynis_report_data{'tests_executed'});
|
|||
|
||||
#print Dumper(\%warnings);
|
||||
|
||||
open OUT, ">$output" or die colored("There was a problem opening the output file ($output): $! \n", "bold red");
|
||||
print OUT <<END;
|
||||
if ($excel) {
|
||||
# do the Excel thing....
|
||||
my $wb = Excel::Writer::XLSX->new('report.xlsx');
|
||||
my $title_format = $wb->add_format();
|
||||
$title_format->set_size('32');
|
||||
|
||||
my $subtitle_format = $wb->add_format();
|
||||
$subtitle_format->set_size('24');
|
||||
|
||||
my $summary_ws = $wb->add_worksheet('Summary');
|
||||
$summary_ws->write('B2', "lynis Asset Report", $title_format);
|
||||
$summary_ws->write('B3', "created by ");
|
||||
$summary_ws->write_url('C3', "http://github.com/d4t4king/lynis_report.git", '', 'lynis_report');
|
||||
$summary_ws->write('A4', "Host Findings:", $subtitle_format);
|
||||
$summary_ws->write('A5', "hardening index:");
|
||||
$summary_ws->write('B5', $lynis_report_data{'hardening_index'});
|
||||
|
||||
|
||||
} else {
|
||||
open OUT, ">$output" or die colored("There was a problem opening the output file ($output): $! \n", "bold red");
|
||||
print OUT <<END;
|
||||
|
||||
<html >
|
||||
<head>
|
||||
|
@ -171,99 +196,99 @@ print OUT <<END;
|
|||
<table border="1"><tr><td>hardening index:</td>
|
||||
END
|
||||
|
||||
given ($lynis_report_data{'hardening_index'}) {
|
||||
when (($lynis_report_data{'hardening_index'} < 100) and ($lynis_report_data{'hardening_index'} > 90)) {
|
||||
# green
|
||||
print OUT "\t\t\t\t<td class=\"good\">$lynis_report_data{'hardening_index'}</td>";
|
||||
given ($lynis_report_data{'hardening_index'}) {
|
||||
when (($lynis_report_data{'hardening_index'} < 100) and ($lynis_report_data{'hardening_index'} > 90)) {
|
||||
# green
|
||||
print OUT "\t\t\t\t<td class=\"good\">$lynis_report_data{'hardening_index'}</td>";
|
||||
}
|
||||
when (($lynis_report_data{'hardening_index'} <= 90) and ($lynis_report_data{'hardening_index'} > 80)) {
|
||||
# yellow
|
||||
print OUT "\t\t\t\t<td class=\"fair\">$lynis_report_data{'hardening_index'}</td>";
|
||||
}
|
||||
when (($lynis_report_data{'hardening_index'} <= 80) and ($lynis_report_data{'hardening_index'} > 65)) {
|
||||
# orange
|
||||
print OUT "\t\t\t\t<td class=\"poor\">$lynis_report_data{'hardening_index'}</td>";
|
||||
}
|
||||
when ($lynis_report_data{'hardening_index'} <= 65) {
|
||||
# red
|
||||
print OUT "\t\t\t\t<td class=\"dismal\">$lynis_report_data{'hardening_index'}</td>";
|
||||
}
|
||||
default {
|
||||
# error
|
||||
}
|
||||
}
|
||||
when (($lynis_report_data{'hardening_index'} <= 90) and ($lynis_report_data{'hardening_index'} > 80)) {
|
||||
# yellow
|
||||
print OUT "\t\t\t\t<td class=\"fair\">$lynis_report_data{'hardening_index'}</td>";
|
||||
}
|
||||
when (($lynis_report_data{'hardening_index'} <= 80) and ($lynis_report_data{'hardening_index'} > 65)) {
|
||||
# orange
|
||||
print OUT "\t\t\t\t<td class=\"poor\">$lynis_report_data{'hardening_index'}</td>";
|
||||
}
|
||||
when ($lynis_report_data{'hardening_index'} <= 65) {
|
||||
# red
|
||||
print OUT "\t\t\t\t<td class=\"dismal\">$lynis_report_data{'hardening_index'}</td>";
|
||||
}
|
||||
default {
|
||||
# error
|
||||
}
|
||||
}
|
||||
|
||||
print OUT "\t\t\t</tr></table>\n";
|
||||
if (!exists($lynis_report_data{'warning[]'})) {
|
||||
print OUT "<h4>warnings (0):</h4>\n";
|
||||
} else {
|
||||
print OUT "<h4>warnings (".scalar(@{$lynis_report_data{'warning[]'}})."):</h4>\n";
|
||||
}
|
||||
print OUT <<END;
|
||||
print OUT "\t\t\t</tr></table>\n";
|
||||
if (!exists($lynis_report_data{'warning[]'})) {
|
||||
print OUT "<h4>warnings (0):</h4>\n";
|
||||
} else {
|
||||
print OUT "<h4>warnings (".scalar(@{$lynis_report_data{'warning[]'}})."):</h4>\n";
|
||||
}
|
||||
print OUT <<END;
|
||||
<div class="content_subsection">
|
||||
<table border="1">
|
||||
<tr><td>Warning ID</td><td>Description</td><td>Severity</td><td>F4</td></tr>
|
||||
END
|
||||
if (exists($lynis_report_data{'warning[]'})) {
|
||||
if (ref($lynis_report_data{'warning[]'}) eq 'ARRAY') {
|
||||
if (${$lynis_report_data{'warning[]'}}[0] =~ /\|/) { # more than one
|
||||
foreach my $warn ( sort @{$lynis_report_data{'warning[]'}} ) {
|
||||
my ($warn_id,$warn_desc,$warn_sev,$warn_f4) = split(/\|/, $warn);
|
||||
if (exists($lynis_report_data{'warning[]'})) {
|
||||
if (ref($lynis_report_data{'warning[]'}) eq 'ARRAY') {
|
||||
if (${$lynis_report_data{'warning[]'}}[0] =~ /\|/) { # more than one
|
||||
foreach my $warn ( sort @{$lynis_report_data{'warning[]'}} ) {
|
||||
my ($warn_id,$warn_desc,$warn_sev,$warn_f4) = split(/\|/, $warn);
|
||||
print OUT "\t\t\t\t\t<tr><td>$warn_id</td><td>$warn_desc</td><td>$to_long_severity{$warn_sev}</td><td>$warn_f4</td></tr>\n";
|
||||
}
|
||||
} elsif (${$lynis_report_data{'warning[]'}}[0] =~ /[A-Z]{4}\-\d{4}/) { # one warning
|
||||
my $warn_id = ${$lynis_report_data{'warning[]'}}[0];
|
||||
my $warn_desc = ${$lynis_report_data{'warning[]'}}[1];
|
||||
my $warn_sev = ${$lynis_report_data{'warning[]'}}[2];
|
||||
my $warn_f4 = ${$lynis_report_data{'warning[]'}}[3];
|
||||
print OUT "\t\t\t\t\t<tr><td>$warn_id</td><td>$warn_desc</td><td>$to_long_severity{$warn_sev}</td><td>$warn_f4</td></tr>\n";
|
||||
} else {
|
||||
die colored("Unexpected ARRAY format! \n", "bold red");
|
||||
}
|
||||
} elsif (${$lynis_report_data{'warning[]'}}[0] =~ /[A-Z]{4}\-\d{4}/) { # one warning
|
||||
my $warn_id = ${$lynis_report_data{'warning[]'}}[0];
|
||||
my $warn_desc = ${$lynis_report_data{'warning[]'}}[1];
|
||||
my $warn_sev = ${$lynis_report_data{'warning[]'}}[2];
|
||||
my $warn_f4 = ${$lynis_report_data{'warning[]'}}[3];
|
||||
print OUT "\t\t\t\t\t<tr><td>$warn_id</td><td>$warn_desc</td><td>$to_long_severity{$warn_sev}</td><td>$warn_f4</td></tr>\n";
|
||||
} else {
|
||||
die colored("Unexpected ARRAY format! \n", "bold red");
|
||||
die colored("warning[] not ARRAY ref!: ".ref($lynis_report_data{'warning[]'})."\n", "bold red");
|
||||
}
|
||||
} else {
|
||||
die colored("warning[] not ARRAY ref!: ".ref($lynis_report_data{'warning[]'})."\n", "bold red");
|
||||
}
|
||||
}
|
||||
print OUT <<END;
|
||||
print OUT <<END;
|
||||
</table>
|
||||
</div>
|
||||
END
|
||||
print OUT "\t\t\t<h4>suggestions (".scalar(@{$lynis_report_data{'suggestion[]'}})."):</h4>\n";
|
||||
print OUT <<END;
|
||||
print OUT "\t\t\t<h4>suggestions (".scalar(@{$lynis_report_data{'suggestion[]'}})."):</h4>\n";
|
||||
print OUT <<END;
|
||||
<div class="content_subsection">
|
||||
<table border="1">
|
||||
<tr><td>Suggestion ID</td><td>Description</td><td>Severity</td><td>F4</td></tr>
|
||||
END
|
||||
if ((ref($lynis_report_data{'suggestion[]'}) eq 'ARRAY') and
|
||||
(${$lynis_report_data{'suggestion[]'}}[0] =~ /\|/)) {
|
||||
foreach my $sug ( sort @{$lynis_report_data{'suggestion[]'}} ) {
|
||||
my ($sug_id,$sug_desc,$sug_sev,$sug_f4,$sug_f5) = split(/\|/, $sug);
|
||||
if ($sug_desc eq 'Consider hardening SSH configuration') {
|
||||
$sug_desc .= ": $sug_sev"; $sug_sev = '-';
|
||||
if ((ref($lynis_report_data{'suggestion[]'}) eq 'ARRAY') and
|
||||
(${$lynis_report_data{'suggestion[]'}}[0] =~ /\|/)) {
|
||||
foreach my $sug ( sort @{$lynis_report_data{'suggestion[]'}} ) {
|
||||
my ($sug_id,$sug_desc,$sug_sev,$sug_f4,$sug_f5) = split(/\|/, $sug);
|
||||
if ($sug_desc eq 'Consider hardening SSH configuration') {
|
||||
$sug_desc .= ": $sug_sev"; $sug_sev = '-';
|
||||
}
|
||||
print OUT "\t\t\t\t\t<tr><td>$sug_id</td>";
|
||||
print OUT "<td>$sug_desc</td>";
|
||||
print OUT "<td>".($sug_sev ? $sug_sev : " ")."</td>";
|
||||
print OUT "<td>".($sug_f4 ? $sug_f4 : " ")."</td></tr>\n";
|
||||
}
|
||||
print OUT "\t\t\t\t\t<tr><td>$sug_id</td>";
|
||||
print OUT "<td>$sug_desc</td>";
|
||||
print OUT "<td>".($sug_sev ? $sug_sev : " ")."</td>";
|
||||
print OUT "<td>".($sug_f4 ? $sug_f4 : " ")."</td></tr>\n";
|
||||
}
|
||||
}
|
||||
print OUT <<END;
|
||||
print OUT <<END;
|
||||
</table>
|
||||
</div>
|
||||
<h4>manual checks:</h4>
|
||||
<ul>
|
||||
END
|
||||
if ((exists($lynis_report_data{'manual[]'})) and (scalar(@{$lynis_report_data{'manual[]'}}) > 0)) {
|
||||
foreach my $man ( sort @{$lynis_report_data{'manual[]'}} ) {
|
||||
#print Dumper($man);
|
||||
chomp($man);
|
||||
print OUT "<li>$man</li>\n";
|
||||
if ((exists($lynis_report_data{'manual[]'})) and (scalar(@{$lynis_report_data{'manual[]'}}) > 0)) {
|
||||
foreach my $man ( sort @{$lynis_report_data{'manual[]'}} ) {
|
||||
#print Dumper($man);
|
||||
chomp($man);
|
||||
print OUT "<li>$man</li>\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# It's easier to move stuff around if there is one cell (or cell group) per libe for the tables. Maybe this
|
||||
# isn't ideal HTML writing, but it makes sense when writing the tool.
|
||||
print OUT <<END;
|
||||
# It's easier to move stuff around if there is one cell (or cell group) per libe for the tables. Maybe this
|
||||
# isn't ideal HTML writing, but it makes sense when writing the tool.
|
||||
print OUT <<END;
|
||||
</ul>
|
||||
<hr />
|
||||
<h3><a name="lynis_info">lynis info:</a></h3>
|
||||
|
@ -276,12 +301,12 @@ print OUT <<END;
|
|||
<tr>
|
||||
<td>lynis update available:</td><td>$to_bool{$lynis_report_data{'lynis_update_available'}}</td>
|
||||
END
|
||||
if ((defined($lynis_report_data{'license_key'})) and ($lynis_report_data{'license_key'} ne "")) {
|
||||
print OUT "\n\n\n\n\n\n<td>license key:</td><td>$lynis_report_data{'license_key'}</td>\n";
|
||||
} else {
|
||||
print OUT "\n\n\n\n\n\n<td>license key:</td><td> </td>\n";
|
||||
}
|
||||
print OUT <<END;
|
||||
if ((defined($lynis_report_data{'license_key'})) and ($lynis_report_data{'license_key'} ne "")) {
|
||||
print OUT "\n\n\n\n\n\n<td>license key:</td><td>$lynis_report_data{'license_key'}</td>\n";
|
||||
} else {
|
||||
print OUT "\n\n\n\n\n\n<td>license key:</td><td> </td>\n";
|
||||
}
|
||||
print OUT <<END;
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">report version:</td><td colspan="2">$lynis_report_data{'report_version_major'}.$lynis_report_data{'report_version_minor'}</td>
|
||||
|
@ -293,15 +318,15 @@ print OUT <<END;
|
|||
<tr>
|
||||
END
|
||||
|
||||
print OUT "\t\t\t\t\t\t<td>phase 1 plugins enabled:</td><td colspan=\"3\">\n";
|
||||
print OUT "\t\t\t\t\t\t\t<table border=\"1\" id=\"lynis_plugins_table\">\n";
|
||||
foreach my $plug ( sort @{$lynis_report_data{'plugin_enabled_phase1[]'}} ) {
|
||||
my ($n,$v) = split(/\|/, $plug);
|
||||
print OUT "\t\t\t\t\t\t\t\t<tr><td>name:</td><td>$n</td><td>version:</td><td>$v</td></tr>\n";
|
||||
}
|
||||
print OUT "\t\t\t\t\t\t\t</table>\n";
|
||||
print OUT "\t\t\t\t\t\t</td>\n";
|
||||
print OUT <<END;
|
||||
print OUT "\t\t\t\t\t\t<td>phase 1 plugins enabled:</td><td colspan=\"3\">\n";
|
||||
print OUT "\t\t\t\t\t\t\t<table border=\"1\" id=\"lynis_plugins_table\">\n";
|
||||
foreach my $plug ( sort @{$lynis_report_data{'plugin_enabled_phase1[]'}} ) {
|
||||
my ($n,$v) = split(/\|/, $plug);
|
||||
print OUT "\t\t\t\t\t\t\t\t<tr><td>name:</td><td>$n</td><td>version:</td><td>$v</td></tr>\n";
|
||||
}
|
||||
print OUT "\t\t\t\t\t\t\t</table>\n";
|
||||
print OUT "\t\t\t\t\t\t</td>\n";
|
||||
print OUT <<END;
|
||||
</tr>
|
||||
<tr>
|
||||
<td>report start time:</td><td>$lynis_report_data{'report_datetime_start'}</td><td>report end time:</td><td>$lynis_report_data{'report_datetime_end'}</td>
|
||||
|
@ -318,12 +343,12 @@ print OUT <<END;
|
|||
<td>hostname:</td><td>$lynis_report_data{'hostname'}</td>
|
||||
<td>domainname:</td><td>$lynis_report_data{'domainname'}</td>
|
||||
END
|
||||
if ((defined($lynis_report_data{'resolv_conf_domain'})) and ($lynis_report_data{'resolv_conf_domain'} ne "")) {
|
||||
print OUT "\t\t\t\t\t\t<td>resolv.conf domain:</td><td>$lynis_report_data{'resolv_conf_domain'}</td>\n";
|
||||
} else {
|
||||
print OUT "\t\t\t\t\t\t<td>resolv.conf domain:</td><td> </td>\n";
|
||||
}
|
||||
print OUT <<END;
|
||||
if ((defined($lynis_report_data{'resolv_conf_domain'})) and ($lynis_report_data{'resolv_conf_domain'} ne "")) {
|
||||
print OUT "\t\t\t\t\t\t<td>resolv.conf domain:</td><td>$lynis_report_data{'resolv_conf_domain'}</td>\n";
|
||||
} else {
|
||||
print OUT "\t\t\t\t\t\t<td>resolv.conf domain:</td><td> </td>\n";
|
||||
}
|
||||
print OUT <<END;
|
||||
</tr>
|
||||
<tr>
|
||||
<td>os:</td><td>$lynis_report_data{'os'}</td>
|
||||
|
@ -342,20 +367,20 @@ print OUT <<END;
|
|||
</tr>
|
||||
<tr>
|
||||
END
|
||||
print OUT "\t\t\t\t\t\t<td>Available shells:</td><td>".join("<br />\n", @{$lynis_report_data{'available_shell[]'}})."</td>\n";
|
||||
print OUT <<END;
|
||||
print OUT "\t\t\t\t\t\t<td>Available shells:</td><td>".join("<br />\n", @{$lynis_report_data{'available_shell[]'}})."</td>\n";
|
||||
print OUT <<END;
|
||||
<td>locate db:</td><td>$lynis_report_data{'locate_db'}</td>
|
||||
<td>uptime (days):</td><td>$lynis_report_data{'uptime_in_days'}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>vm:</td><td>$lynis_report_data{'vm'}</td>
|
||||
END
|
||||
if ((defined($lynis_report_data{'vmtype'})) and ($lynis_report_data{'vmtype'} ne "")) {
|
||||
print OUT "\t\t\t\t\t\t<td>vm_type:</td><td>$lynis_report_data{'vmtype'}</td>\n";
|
||||
} else{
|
||||
print OUT "\t\t\t\t\t\t<td>vm_type:</td><td> </td>\n";
|
||||
}
|
||||
print OUT <<END;
|
||||
if ((defined($lynis_report_data{'vmtype'})) and ($lynis_report_data{'vmtype'} ne "")) {
|
||||
print OUT "\t\t\t\t\t\t<td>vm_type:</td><td>$lynis_report_data{'vmtype'}</td>\n";
|
||||
} else{
|
||||
print OUT "\t\t\t\t\t\t<td>vm_type:</td><td> </td>\n";
|
||||
}
|
||||
print OUT <<END;
|
||||
<td>uptime (secs):</td><td>$lynis_report_data{'uptime_in_seconds'}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -369,22 +394,22 @@ print OUT <<END;
|
|||
<td>IPv6 Only:</td><td>$to_bool{$lynis_report_data{'ipv6_only'}}</td>
|
||||
</tr>
|
||||
END
|
||||
print OUT "\t\t\t\t\t<tr><td colspan=\"2\">network interfaces:</td><td colspan=\"2\">".join("<br />\n", @{$lynis_report_data{'network_interface[]'}})."</td></tr>\n";
|
||||
print OUT "\t\t\t\t\t<tr><td colspan=\"2\">ipv4 addresses:</td><td colspan=\"2\">".join("<br />\n", @{$lynis_report_data{'network_ipv4_address[]'}})."</td></tr>\n";
|
||||
print OUT "\t\t\t\t\t<tr><td colspan=\"2\">ipv6 addresses:</td><td colspan=\"2\">".join("<br />\n", @{$lynis_report_data{'network_ipv6_address[]'}})."</td></tr>\n";
|
||||
print OUT "\t\t\t\t\t<tr><td colspan=\"2\">Default Gateway</td><td colspan=\"2\">$lynis_report_data{'default_gateway[]'}</td></tr>\n";
|
||||
print OUT <<END;
|
||||
print OUT "\t\t\t\t\t<tr><td colspan=\"2\">network interfaces:</td><td colspan=\"2\">".join("<br />\n", @{$lynis_report_data{'network_interface[]'}})."</td></tr>\n";
|
||||
print OUT "\t\t\t\t\t<tr><td colspan=\"2\">ipv4 addresses:</td><td colspan=\"2\">".join("<br />\n", @{$lynis_report_data{'network_ipv4_address[]'}})."</td></tr>\n";
|
||||
print OUT "\t\t\t\t\t<tr><td colspan=\"2\">ipv6 addresses:</td><td colspan=\"2\">".join("<br />\n", @{$lynis_report_data{'network_ipv6_address[]'}})."</td></tr>\n";
|
||||
print OUT "\t\t\t\t\t<tr><td colspan=\"2\">Default Gateway</td><td colspan=\"2\">$lynis_report_data{'default_gateway[]'}</td></tr>\n";
|
||||
print OUT <<END;
|
||||
<tr>
|
||||
END
|
||||
#print STDERR "Should be ARRAY: |".ref($lynis_report_data{'network_mac_address[]'})."|\n";
|
||||
if (ref($lynis_report_data{'network_mac_address[]'}) eq "ARRAY") {
|
||||
print OUT "\t\t\t\t\t\t<td>MAC Address:</td><td>".join("<br />\n", @{$lynis_report_data{'network_mac_address[]'}})."</td>\n";
|
||||
} elsif ((defined($lynis_report_data{'network_mac_address[]'})) and ($lynis_report_data{'network_mac_address[]'} ne "")) {
|
||||
print OUT "\t\t\t\t\t\t<td>MAC Address:</td><td>$lynis_report_data{'network_mac_address[]'}</td>\n";
|
||||
} else {
|
||||
print OUT "\t\t\t\t\t\t<td>MAC Address:</td><td> </td>\n";
|
||||
}
|
||||
print OUT <<END;
|
||||
#print STDERR "Should be ARRAY: |".ref($lynis_report_data{'network_mac_address[]'})."|\n";
|
||||
if (ref($lynis_report_data{'network_mac_address[]'}) eq "ARRAY") {
|
||||
print OUT "\t\t\t\t\t\t<td>MAC Address:</td><td>".join("<br />\n", @{$lynis_report_data{'network_mac_address[]'}})."</td>\n";
|
||||
} elsif ((defined($lynis_report_data{'network_mac_address[]'})) and ($lynis_report_data{'network_mac_address[]'} ne "")) {
|
||||
print OUT "\t\t\t\t\t\t<td>MAC Address:</td><td>$lynis_report_data{'network_mac_address[]'}</td>\n";
|
||||
} else {
|
||||
print OUT "\t\t\t\t\t\t<td>MAC Address:</td><td> </td>\n";
|
||||
}
|
||||
print OUT <<END;
|
||||
<td>Name Cache Used:</td><td>$to_bool{$lynis_report_data{'name_cache_used'}}</td>
|
||||
</td>
|
||||
</table>
|
||||
|
@ -393,22 +418,22 @@ print OUT <<END;
|
|||
<tr><td>IP Address</td><td>Port</td><td>Protocol</td><td>Daemon/Process</td><td>???</td></tr>
|
||||
END
|
||||
|
||||
foreach my $obj ( sort @{$lynis_report_data{'network_listen_port[]'}} ) {
|
||||
my ($ipp,$proto,$daemon,$dunno) = split(/\|/, $obj);
|
||||
my ($ip,$port);
|
||||
my $colon_count = grep(/\:/, split(//, $ipp));
|
||||
if ($colon_count > 1) {
|
||||
# must be an IPv6 address;
|
||||
my @parts = split(/\:/, $ipp);
|
||||
$port = pop(@parts);
|
||||
$ip = join(":", @parts);
|
||||
} else {
|
||||
# must be IPv4
|
||||
($ip,$port) = split(/\:/, $ipp);
|
||||
foreach my $obj ( sort @{$lynis_report_data{'network_listen_port[]'}} ) {
|
||||
my ($ipp,$proto,$daemon,$dunno) = split(/\|/, $obj);
|
||||
my ($ip,$port);
|
||||
my $colon_count = grep(/\:/, split(//, $ipp));
|
||||
if ($colon_count > 1) {
|
||||
# must be an IPv6 address;
|
||||
my @parts = split(/\:/, $ipp);
|
||||
$port = pop(@parts);
|
||||
$ip = join(":", @parts);
|
||||
} else {
|
||||
# must be IPv4
|
||||
($ip,$port) = split(/\:/, $ipp);
|
||||
}
|
||||
print OUT "\t\t\t\t\t<tr><td>$ip</td><td>$port</td><td>$proto</td><td>$daemon</td><td>$dunno</td></tr>\n";
|
||||
}
|
||||
print OUT "\t\t\t\t\t<tr><td>$ip</td><td>$port</td><td>$proto</td><td>$daemon</td><td>$dunno</td></tr>\n";
|
||||
}
|
||||
print OUT <<END;
|
||||
print OUT <<END;
|
||||
</table>
|
||||
</div>
|
||||
<hr />
|
||||
|
@ -441,8 +466,8 @@ print OUT <<END;
|
|||
</tr>
|
||||
<tr>
|
||||
END
|
||||
printf OUT "\t\t\t\t\t\t<td>Password Complexity Score:</td><td>%#b</td>\n", $pass_score;
|
||||
print OUT <<END;
|
||||
printf OUT "\t\t\t\t\t\t<td>Password Complexity Score:</td><td>%#b</td>\n", $pass_score;
|
||||
print OUT <<END;
|
||||
<td>PAM Cracklib Found:</td><td>$to_bool{$lynis_report_data{'pam_cracklib'}}</td>
|
||||
<td>Password Strength Tested:</td><td>$to_bool{$lynis_report_data{'password_strength_tested'}}</td>
|
||||
<td>Failed Logins Logged:</td><td>$lynis_report_data{'auth_failed_logins_logged'}</td>
|
||||
|
@ -452,24 +477,24 @@ print OUT <<END;
|
|||
<td>File Integrity Tool:</td><td>$lynis_report_data{'file_integrity_tool'}</td>
|
||||
<td>Automation Tool Present:</td><td>$to_bool{$lynis_report_data{'automation_tool_present'}}</td>
|
||||
END
|
||||
if (ref($lynis_report_data{'automation_tool_running[]'}) eq 'ARRAY') {
|
||||
print OUT "\t\t\t\t\t\t<td>Automation Tool:</td><td>".join("<br />\n", @{$lynis_report_data{'automation_tool_running[]'}})."</td>\n";
|
||||
} elsif ((defined($lynis_report_data{'automation_tool_running[]'})) and ($lynis_report_data{'automation_tool_running[]'} ne "")) {
|
||||
print OUT "\t\t\t\t\t\t<td>Automation Tool:</td><td>$lynis_report_data{'automation_tool_running[]'}</td>\n";
|
||||
} else {
|
||||
print OUT "\t\t\t\t\t\t<td>Automation Tool:</td><td> </td>\n";
|
||||
}
|
||||
print OUT <<END;
|
||||
if (ref($lynis_report_data{'automation_tool_running[]'}) eq 'ARRAY') {
|
||||
print OUT "\t\t\t\t\t\t<td>Automation Tool:</td><td>".join("<br />\n", @{$lynis_report_data{'automation_tool_running[]'}})."</td>\n";
|
||||
} elsif ((defined($lynis_report_data{'automation_tool_running[]'})) and ($lynis_report_data{'automation_tool_running[]'} ne "")) {
|
||||
print OUT "\t\t\t\t\t\t<td>Automation Tool:</td><td>$lynis_report_data{'automation_tool_running[]'}</td>\n";
|
||||
} else {
|
||||
print OUT "\t\t\t\t\t\t<td>Automation Tool:</td><td> </td>\n";
|
||||
}
|
||||
print OUT <<END;
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Malware Scanner Installed:</td><td>$to_bool{$lynis_report_data{'malware_scanner_installed'}}</td>
|
||||
END
|
||||
if (exists($lynis_report_data{'ids_ips_tooling[]'})) {
|
||||
print OUT "\t\t\t\t\t\t<td>IDS/IPS Tooling</td><td>$lynis_report_data{'ids_ips_tooling[]'}</td>\n";
|
||||
} else {
|
||||
print OUT "\t\t\t\t\t\t<td>IDS/IPS Tooling</td><td> </td>\n";
|
||||
}
|
||||
print OUT <<END;
|
||||
if (exists($lynis_report_data{'ids_ips_tooling[]'})) {
|
||||
print OUT "\t\t\t\t\t\t<td>IDS/IPS Tooling</td><td>$lynis_report_data{'ids_ips_tooling[]'}</td>\n";
|
||||
} else {
|
||||
print OUT "\t\t\t\t\t\t<td>IDS/IPS Tooling</td><td> </td>\n";
|
||||
}
|
||||
print OUT <<END;
|
||||
<td></td><td></td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
|
@ -478,29 +503,29 @@ print OUT <<END;
|
|||
<div id="pamModToggle" style="display: none">
|
||||
<table border="0">
|
||||
END
|
||||
my $arrlen = scalar(@{$lynis_report_data{'pam_module[]'}});
|
||||
#print "ARRLEN: $arrlen \n";
|
||||
if (($arrlen % 5) == 0) {
|
||||
#print "ARRLEN divisible by 5. \n";
|
||||
for (my $i=0;$i<$arrlen;$i+=5) {
|
||||
print OUT "\t\t\t\t\t<tr><td>${$lynis_report_data{'pam_module[]'}}[$i]</td><td>${$lynis_report_data{'pam_module[]'}}[($i + 1)]</td><td>${$lynis_report_data{'pam_module[]'}}[($i + 2)]</td><td>${$lynis_report_data{'pam_module[]'}}[($i + 3)]</td><td>${$lynis_report_data{'pam_module[]'}}[($i + 4)]</td></tr>\n";
|
||||
my $arrlen = scalar(@{$lynis_report_data{'pam_module[]'}});
|
||||
#print "ARRLEN: $arrlen \n";
|
||||
if (($arrlen % 5) == 0) {
|
||||
#print "ARRLEN divisible by 5. \n";
|
||||
for (my $i=0;$i<$arrlen;$i+=5) {
|
||||
print OUT "\t\t\t\t\t<tr><td>${$lynis_report_data{'pam_module[]'}}[$i]</td><td>${$lynis_report_data{'pam_module[]'}}[($i + 1)]</td><td>${$lynis_report_data{'pam_module[]'}}[($i + 2)]</td><td>${$lynis_report_data{'pam_module[]'}}[($i + 3)]</td><td>${$lynis_report_data{'pam_module[]'}}[($i + 4)]</td></tr>\n";
|
||||
}
|
||||
} elsif (($arrlen % 4) == 0) {
|
||||
print "ARRLEN divisible by 4. \n";
|
||||
} elsif (($arrlen % 3) == 0) {
|
||||
#print "ARRLEN divisible by 3. \n";
|
||||
for (my $i=0;$i<$arrlen;$i+=3) {
|
||||
print OUT "\t\t\t\t\t<tr><td>${$lynis_report_data{'pam_module[]'}}[$i]</td><td>${$lynis_report_data{'pam_module[]'}}[($i + 1)]</td><td>${$lynis_report_data{'pam_module[]'}}[($i + 2)]</td></tr>\n";
|
||||
}
|
||||
} elsif (($arrlen % 2) == 0) {
|
||||
#print "ARRLEN divisible by 2. \n";
|
||||
for (my $i=0;$i<$arrlen;$i+=2) {
|
||||
print OUT "\t\t\t\t\t<tr><td>${$lynis_report_data{'pam_module[]'}}[$i]</td><td>${$lynis_report_data{'pam_module[]'}}[($i + 1)]</td></tr>\n";
|
||||
}
|
||||
} else {
|
||||
die colored("ARRLEN appears to be number with a divisor larger than 5 or 1 ($arrlen) \n", "bold red");
|
||||
}
|
||||
} elsif (($arrlen % 4) == 0) {
|
||||
print "ARRLEN divisible by 4. \n";
|
||||
} elsif (($arrlen % 3) == 0) {
|
||||
#print "ARRLEN divisible by 3. \n";
|
||||
for (my $i=0;$i<$arrlen;$i+=3) {
|
||||
print OUT "\t\t\t\t\t<tr><td>${$lynis_report_data{'pam_module[]'}}[$i]</td><td>${$lynis_report_data{'pam_module[]'}}[($i + 1)]</td><td>${$lynis_report_data{'pam_module[]'}}[($i + 2)]</td></tr>\n";
|
||||
}
|
||||
} elsif (($arrlen % 2) == 0) {
|
||||
#print "ARRLEN divisible by 2. \n";
|
||||
for (my $i=0;$i<$arrlen;$i+=2) {
|
||||
print OUT "\t\t\t\t\t<tr><td>${$lynis_report_data{'pam_module[]'}}[$i]</td><td>${$lynis_report_data{'pam_module[]'}}[($i + 1)]</td></tr>\n";
|
||||
}
|
||||
} else {
|
||||
die colored("ARRLEN appears to be number with a divisor larger than 5 or 1 ($arrlen) \n", "bold red");
|
||||
}
|
||||
print OUT <<END;
|
||||
print OUT <<END;
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -525,26 +550,26 @@ print OUT <<END;
|
|||
<div id="kernelModToggle" style="display: none">
|
||||
<table border="0">
|
||||
END
|
||||
$arrlen = scalar(@{$lynis_report_data{'loaded_kernel_module[]'}});
|
||||
#print "ARRLEN: $arrlen \n";
|
||||
if (($arrlen % 5) == 0) {
|
||||
print "ARRLEN divisible by 5. \n";
|
||||
} elsif (($arrlen % 4) == 0) {
|
||||
#print "ARRLEN divisible by 4. \n";
|
||||
for (my $i=0;$i<$arrlen;$i+=4) {
|
||||
print OUT "\t\t\t\t\t\t<tr><td>${$lynis_report_data{'loaded_kernel_module[]'}}[$i]</td><td>${$lynis_report_data{'loaded_kernel_module[]'}}[($i + 1)]</td><td>${$lynis_report_data{'loaded_kernel_module[]'}}[($i + 2)]</td><td>${$lynis_report_data{'loaded_kernel_module[]'}}[($i + 3)]</td></tr>\n";
|
||||
$arrlen = scalar(@{$lynis_report_data{'loaded_kernel_module[]'}});
|
||||
#print "ARRLEN: $arrlen \n";
|
||||
if (($arrlen % 5) == 0) {
|
||||
print "ARRLEN divisible by 5. \n";
|
||||
} elsif (($arrlen % 4) == 0) {
|
||||
#print "ARRLEN divisible by 4. \n";
|
||||
for (my $i=0;$i<$arrlen;$i+=4) {
|
||||
print OUT "\t\t\t\t\t\t<tr><td>${$lynis_report_data{'loaded_kernel_module[]'}}[$i]</td><td>${$lynis_report_data{'loaded_kernel_module[]'}}[($i + 1)]</td><td>${$lynis_report_data{'loaded_kernel_module[]'}}[($i + 2)]</td><td>${$lynis_report_data{'loaded_kernel_module[]'}}[($i + 3)]</td></tr>\n";
|
||||
}
|
||||
} elsif (($arrlen % 3) == 0) {
|
||||
#print "ARRLEN divisible by 3. \n";
|
||||
for (my $i=0;$i<$arrlen;$i+=3) {
|
||||
print OUT "\t\t\t\t\t\t<tr><td>${$lynis_report_data{'loaded_kernel_module[]'}}[$i]</td><td>${$lynis_report_data{'loaded_kernel_module[]'}}[($i + 1)]</td><td>${$lynis_report_data{'loaded_kernel_module[]'}}[($i + 2)]</td></tr>\n";
|
||||
}
|
||||
} elsif (($arrlen % 2) == 0) {
|
||||
print "ARRLEN divisible by 2. \n";
|
||||
} else {
|
||||
die colored("ARRLEN appears to be number with a divisor larger than 5 or 1 ($arrlen) \n","bold red");
|
||||
}
|
||||
} elsif (($arrlen % 3) == 0) {
|
||||
#print "ARRLEN divisible by 3. \n";
|
||||
for (my $i=0;$i<$arrlen;$i+=3) {
|
||||
print OUT "\t\t\t\t\t\t<tr><td>${$lynis_report_data{'loaded_kernel_module[]'}}[$i]</td><td>${$lynis_report_data{'loaded_kernel_module[]'}}[($i + 1)]</td><td>${$lynis_report_data{'loaded_kernel_module[]'}}[($i + 2)]</td></tr>\n";
|
||||
}
|
||||
} elsif (($arrlen % 2) == 0) {
|
||||
print "ARRLEN divisible by 2. \n";
|
||||
} else {
|
||||
die colored("ARRLEN appears to be number with a divisor larger than 5 or 1 ($arrlen) \n","bold red");
|
||||
}
|
||||
print OUT <<END;
|
||||
print OUT <<END;
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -553,25 +578,25 @@ print OUT <<END;
|
|||
<div class="content_subsection">
|
||||
<!-- <table border="1">
|
||||
END
|
||||
foreach my $prog ( sort qw( ntp_daemon mysql ssh_daemon dhcp_client arpwatch audit_daemon ) ) {
|
||||
if ((defined($lynis_report_data{$prog.'_running'})) and ($lynis_report_data{$prog.'_running'} ne "")) {
|
||||
print OUT "\n\n\n\n\n\n<tr><td>$prog running:</td><td>$to_bool{$lynis_report_data{$prog.'_running'}}</td></tr>\n";
|
||||
} else {
|
||||
print OUT "\n\n\n\n\n\n<tr><td>$prog running:</td><td>$to_bool{0}</td></tr>\n";
|
||||
foreach my $prog ( sort qw( ntp_daemon mysql ssh_daemon dhcp_client arpwatch audit_daemon ) ) {
|
||||
if ((defined($lynis_report_data{$prog.'_running'})) and ($lynis_report_data{$prog.'_running'} ne "")) {
|
||||
print OUT "\n\n\n\n\n\n<tr><td>$prog running:</td><td>$to_bool{$lynis_report_data{$prog.'_running'}}</td></tr>\n";
|
||||
} else {
|
||||
print OUT "\n\n\n\n\n\n<tr><td>$prog running:</td><td>$to_bool{0}</td></tr>\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
print OUT "\t\t\t\t\t</table> -->\n";
|
||||
if (exists($lynis_report_data{'running_service[]'})) {
|
||||
print OUT <<END;
|
||||
print OUT "\t\t\t\t\t</table> -->\n";
|
||||
if (exists($lynis_report_data{'running_service[]'})) {
|
||||
print OUT <<END;
|
||||
<h4>Running services:</h4>
|
||||
<ul>
|
||||
END
|
||||
foreach my $svc ( @{$lynis_report_data{'running_service[]'}} ) {
|
||||
print OUT "\t\t\t\t\t<li>$svc</li>\n";
|
||||
foreach my $svc ( @{$lynis_report_data{'running_service[]'}} ) {
|
||||
print OUT "\t\t\t\t\t<li>$svc</li>\n";
|
||||
}
|
||||
print OUT "\t\t\t\t\t</ul>\n";
|
||||
}
|
||||
print OUT "\t\t\t\t\t</ul>\n";
|
||||
}
|
||||
print OUT <<END;
|
||||
print OUT <<END;
|
||||
</div>
|
||||
<hr />
|
||||
<h3><a name="installed_packages">Installed packages:</a></h3>
|
||||
|
@ -587,33 +612,33 @@ print OUT <<END;
|
|||
<div id="pkgContent" style="display: none">
|
||||
<table border="0">
|
||||
END
|
||||
#print OUT "\t\t\t\t\t\t".join(" | ", @{$lynis_report_data{'installed_packages_array'}})."\n";
|
||||
$arrlen = scalar(@{$lynis_report_data{'installed_packages_array'}});
|
||||
#print "ARRLEN: $arrlen \n";
|
||||
if (($arrlen % 5) == 0) {
|
||||
#print "ARRLEN divisible by 5. \n";
|
||||
for (my $i=0;$i<$arrlen;$i+=5) {
|
||||
print OUT "\t\t\t\t\t<tr><td>${$lynis_report_data{'installed_packages_array'}}[$i]</td><td>${$lynis_report_data{'installed_packages_array'}}[($i + 1)]</td><td>${$lynis_report_data{'installed_packages_array'}}[($i + 2)]</td><td>${$lynis_report_data{'installed_packages_array'}}[($i + 3)]</td><td>${$lynis_report_data{'installed_packages_array'}}[($i + 4)]</td></tr>\n";
|
||||
#print OUT "\t\t\t\t\t\t".join(" | ", @{$lynis_report_data{'installed_packages_array'}})."\n";
|
||||
$arrlen = scalar(@{$lynis_report_data{'installed_packages_array'}});
|
||||
#print "ARRLEN: $arrlen \n";
|
||||
if (($arrlen % 5) == 0) {
|
||||
#print "ARRLEN divisible by 5. \n";
|
||||
for (my $i=0;$i<$arrlen;$i+=5) {
|
||||
print OUT "\t\t\t\t\t<tr><td>${$lynis_report_data{'installed_packages_array'}}[$i]</td><td>${$lynis_report_data{'installed_packages_array'}}[($i + 1)]</td><td>${$lynis_report_data{'installed_packages_array'}}[($i + 2)]</td><td>${$lynis_report_data{'installed_packages_array'}}[($i + 3)]</td><td>${$lynis_report_data{'installed_packages_array'}}[($i + 4)]</td></tr>\n";
|
||||
}
|
||||
} elsif (($arrlen % 4) == 0) {
|
||||
#print "ARRLEN divisible by 4. \n";
|
||||
for (my $i=0;$i<$arrlen;$i+=4) {
|
||||
print OUT "\t\t\t\t\t<tr><td>${$lynis_report_data{'installed_packages_array'}}[$i]</td><td>${$lynis_report_data{'installed_packages_array'}}[($i + 1)]</td><td>${$lynis_report_data{'installed_packages_array'}}[($i + 2)]</td><td>${$lynis_report_data{'installed_packages_array'}}[($i + 3)]</td></tr>\n";
|
||||
}
|
||||
} elsif (($arrlen % 3) == 0) {
|
||||
#print "ARRLEN divisible by 3. \n";
|
||||
for (my $i=0;$i<$arrlen;$i+=3) {
|
||||
print OUT "\t\t\t\t\t<tr><td>${$lynis_report_data{'installed_packages_array'}}[$i]</td><td>${$lynis_report_data{'installed_packages_array'}}[($i + 1)]</td><td>${$lynis_report_data{'installed_packages_array'}}[($i + 2)]</td></tr>\n";
|
||||
}
|
||||
} elsif (($arrlen % 2) == 0) {
|
||||
#print "ARRLEN divisible by 2. \n";
|
||||
for (my $i=0;$i<$arrlen;$i+=3) {
|
||||
print OUT "\t\t\t\t\t<tr><td>${$lynis_report_data{'installed_packages_array'}}[$i]</td><td>${$lynis_report_data{'installed_packages_array'}}[($i + 1)]</td></tr>\n";
|
||||
}
|
||||
} else {
|
||||
die colored("ARRLEN appears to be number with a divisor larger than 5 or 1 ($arrlen) \n", "bold red");
|
||||
}
|
||||
} elsif (($arrlen % 4) == 0) {
|
||||
#print "ARRLEN divisible by 4. \n";
|
||||
for (my $i=0;$i<$arrlen;$i+=4) {
|
||||
print OUT "\t\t\t\t\t<tr><td>${$lynis_report_data{'installed_packages_array'}}[$i]</td><td>${$lynis_report_data{'installed_packages_array'}}[($i + 1)]</td><td>${$lynis_report_data{'installed_packages_array'}}[($i + 2)]</td><td>${$lynis_report_data{'installed_packages_array'}}[($i + 3)]</td></tr>\n";
|
||||
}
|
||||
} elsif (($arrlen % 3) == 0) {
|
||||
#print "ARRLEN divisible by 3. \n";
|
||||
for (my $i=0;$i<$arrlen;$i+=3) {
|
||||
print OUT "\t\t\t\t\t<tr><td>${$lynis_report_data{'installed_packages_array'}}[$i]</td><td>${$lynis_report_data{'installed_packages_array'}}[($i + 1)]</td><td>${$lynis_report_data{'installed_packages_array'}}[($i + 2)]</td></tr>\n";
|
||||
}
|
||||
} elsif (($arrlen % 2) == 0) {
|
||||
#print "ARRLEN divisible by 2. \n";
|
||||
for (my $i=0;$i<$arrlen;$i+=3) {
|
||||
print OUT "\t\t\t\t\t<tr><td>${$lynis_report_data{'installed_packages_array'}}[$i]</td><td>${$lynis_report_data{'installed_packages_array'}}[($i + 1)]</td></tr>\n";
|
||||
}
|
||||
} else {
|
||||
die colored("ARRLEN appears to be number with a divisor larger than 5 or 1 ($arrlen) \n", "bold red");
|
||||
}
|
||||
print OUT <<END;
|
||||
print OUT <<END;
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -623,12 +648,14 @@ print OUT <<END;
|
|||
|
||||
END
|
||||
|
||||
close OUT or die colored("There was a problem closing the output file ($output): $! \n", "bold red");
|
||||
close OUT or die colored("There was a problem closing the output file ($output): $! \n", "bold red");
|
||||
|
||||
my @indexes = qw( lynis_version lynis_tests_done lynis_update_available license_key report_datetime_start report_datetime_end plugins_directory plugins_enabled finish report_version_major report_version_minor hostid hostid2 plugin_enabled_phase1[] hardening_index warning[] hostname domainname linux_kernel_version linux_config_file memory_size nameserver[] network_interface[] framework_grsecurity vm vmtype uptime_in_seconds linux_kernel_release os framework_selinux uptime_in_days resolv_conf_domain os_fullname default_gateway[] cpu_nx cpu_pae linux_version os_version network_ipv6_address[] boot_loader suggestion[] manual manual[] linux_version cpu_pae cpu_nx network_ipv4_address[] network_mac_address[] os_name os_kernel_version os_kernel_version_full firewall_installed max_password_retry password_max_days password_min_days pam_cracklib password_strength_tested minimum_password_length package_audit_tool package_audit_tool_found vulnerable_packages_found firewall_active firewall_software[] firewall_software auth_failed_logins_logged authentication_two_factor_enabled memory_units default_gateway authentication_two_factor_required malware_scanner_installed file_integrity_tool_installed file_integrity_tool_installed pam_module[] ids_ips_tooling[] ipv6_mode ipv6_only name_cache_used ldap_pam_enabled ntp_daemon_running mysql_running ssh_daemon_running dhcp_client_running arpwatch_running running_service[] audit_daemon_running installed_packages binaries_count installed_packages_array crond_running network_listen_port[] firewall_empty_ruleset automation_tool_present automation_tool_running[] file_integrity_tool ldap_auth_enabled password_max_l_credit password_max_u_credit password_max_digital_credit password_max_other_credit loaded_kernel_module[] plugin_directory package_manager[] linux_kernel_io_scheduler[] linux_kernel_type details[] available_shell[] locate_db );
|
||||
foreach my $idx ( sort @indexes ) {
|
||||
delete($lynis_report_data{$idx});
|
||||
my @indexes = qw( lynis_version lynis_tests_done lynis_update_available license_key report_datetime_start report_datetime_end plugins_directory plugins_enabled finish report_version_major report_version_minor hostid hostid2 plugin_enabled_phase1[] hardening_index warning[] hostname domainname linux_kernel_version linux_config_file memory_size nameserver[] network_interface[] framework_grsecurity vm vmtype uptime_in_seconds linux_kernel_release os framework_selinux uptime_in_days resolv_conf_domain os_fullname default_gateway[] cpu_nx cpu_pae linux_version os_version network_ipv6_address[] boot_loader suggestion[] manual manual[] linux_version cpu_pae cpu_nx network_ipv4_address[] network_mac_address[] os_name os_kernel_version os_kernel_version_full firewall_installed max_password_retry password_max_days password_min_days pam_cracklib password_strength_tested minimum_password_length package_audit_tool package_audit_tool_found vulnerable_packages_found firewall_active firewall_software[] firewall_software auth_failed_logins_logged authentication_two_factor_enabled memory_units default_gateway authentication_two_factor_required malware_scanner_installed file_integrity_tool_installed file_integrity_tool_installed pam_module[] ids_ips_tooling[] ipv6_mode ipv6_only name_cache_used ldap_pam_enabled ntp_daemon_running mysql_running ssh_daemon_running dhcp_client_running arpwatch_running running_service[] audit_daemon_running installed_packages binaries_count installed_packages_array crond_running network_listen_port[] firewall_empty_ruleset automation_tool_present automation_tool_running[] file_integrity_tool ldap_auth_enabled password_max_l_credit password_max_u_credit password_max_digital_credit password_max_other_credit loaded_kernel_module[] plugin_directory package_manager[] linux_kernel_io_scheduler[] linux_kernel_type details[] available_shell[] locate_db );
|
||||
foreach my $idx ( sort @indexes ) {
|
||||
delete($lynis_report_data{$idx});
|
||||
}
|
||||
}
|
||||
|
||||
#print Dumper(\%lynis_report_data);
|
||||
|
||||
###############################################################################
|
||||
|
|
Loading…
Reference in New Issue
Block a user