function snort_apply_customizations($snortcfg, $if_real)
{
    global $config, $g, $snortdir;
    if (empty($snortcfg['rulesets'])) {
        return;
    } else {
        update_status(gettext("Your set of configured rules are being copied..."));
        log_error("Your set of configured rules are being copied...");
        $enabled_rulesets_array = explode("||", $snortcfg['rulesets']);
        foreach ($enabled_rulesets_array as $enabled_item) {
            @copy("{$snortdir}/rules/{$enabled_item}", "{$snortdir}/snort_{$snortcfg['uuid']}_{$if_real}/rules/{$enabled_item}");
            if (substr($enabled_item, 0, 5) == "snort" && substr($enabled_item, -9) == ".so.rules") {
                $slib = substr($enabled_item, 6, -6);
                if (file_exists("/usr/local/lib/snort/dynamicrules/{$slib}")) {
                    @copy("/usr/local/lib/snort/dynamicrules/{$slib}", "{$snortdir}/snort_{$snortcfg['uuid']}_{$if_real}/dynamicrules/{$slib}");
                }
            }
        }
        @copy("{$snortdir}/classification.config", "{$snortdir}/snort_{$snortcfg['uuid']}_{$if_real}/classification.config");
        @copy("{$snortdir}/gen-msg.map", "{$snortdir}/snort_{$snortcfg['uuid']}_{$if_real}/gen-msg.map");
        if (is_dir("{$snortdir}/generators")) {
            exec("/bin/cp -r {$snortdir}/generators {$snortdir}/snort_{$snortcfg['uuid']}_{$if_real}");
        }
        @copy("{$snortdir}/reference.config", "{$snortdir}/snort_{$snortcfg['uuid']}_{$if_real}/reference.config");
        @copy("{$snortdir}/sid", "{$snortdir}/snort_{$snortcfg['uuid']}_{$if_real}/sid");
        @copy("{$snortdir}/sid-msg.map", "{$snortdir}/snort_{$snortcfg['uuid']}_{$if_real}/sid-msg.map");
        @copy("{$snortdir}/unicode.map", "{$snortdir}/snort_{$snortcfg['uuid']}_{$if_real}/unicode.map");
    }
    if (!empty($snortcfg['rule_sid_on']) || !empty($snortcfg['rule_sid_off'])) {
        if (!empty($snortcfg['rule_sid_on'])) {
            $enabled_sid_on_array = explode("||", trim($snortcfg['rule_sid_on']));
            $enabled_sids = array_flip($enabled_sid_on_array);
        }
        if (!empty($snortcfg['rule_sid_off'])) {
            $enabled_sid_off_array = explode("||", trim($snortcfg['rule_sid_off']));
            $disabled_sids = array_flip($enabled_sid_off_array);
        }
        $files = glob("{$snortdir}/snort_{$snortcfg}_{$if_real}/rules/*.rules");
        foreach ($files as $file) {
            $splitcontents = file($file);
            $changed = false;
            foreach ($splitcontents as $counter => $value) {
                $sid = snort_get_rule_part($value, 'sid:', ';', 0);
                if (!is_numeric($sid)) {
                    continue;
                }
                if (isset($enabled_sids["enablesid {$sid}"])) {
                    if (substr($value, 0, 5) == "alert") {
                        /* Rule is already enabled */
                        continue;
                    }
                    if (substr($value, 0, 7) == "# alert") {
                        /* Rule is disabled, change */
                        $splitcontents[$counter] = substr($value, 2);
                        $changed = true;
                    } else {
                        if (substr($splitcontents[$counter - 1], 0, 5) == "alert") {
                            /* Rule is already enabled */
                            continue;
                        } else {
                            if (substr($splitcontents[$counter - 1], 0, 7) == "# alert") {
                                /* Rule is disabled, change */
                                $splitcontents[$counter - 1] = substr($value, 2);
                                $changed = true;
                            }
                        }
                    }
                } else {
                    if (isset($disabled_sids["disablesid {$sid}"])) {
                        if (substr($value, 0, 7) == "# alert") {
                            /* Rule is already disabled */
                            continue;
                        }
                        if (substr($value, 0, 5) == "alert") {
                            /* Rule is enabled, change */
                            $splitcontents[$counter] = "# {$value}";
                            $changed = true;
                        } else {
                            if (substr($splitcontents[$counter - 1], 0, 7) == "# alert") {
                                /* Rule is already disabled */
                                continue;
                            } else {
                                if (substr($splitcontents[$counter - 1], 0, 5) == "alert") {
                                    /* Rule is enabled, change */
                                    $splitcontents[$counter - 1] = "# {$value}";
                                    $changed = true;
                                }
                            }
                        }
                    }
                }
            }
            if ($changed == true) {
                @file_put_contents($file, implode("\n", $splitcontents));
            }
        }
    }
}
Ejemplo n.º 2
0
        $source = substr($rule_content[$counter2], 0, 20) . "...";
        //source location
        $counter2++;
        $source_port = $rule_content[$counter2];
        //source port location
        $counter2 = $counter2 + 2;
        $destination = substr($rule_content[$counter2], 0, 20) . "...";
        //destination location
        $counter2++;
        $destination_port = $rule_content[$counter2];
        //destination port location
        if (strstr($value, 'msg: "')) {
            $message = snort_get_rule_part($value, 'msg: "', '";', 0);
        } else {
            if (strstr($value, 'msg:"')) {
                $message = snort_get_rule_part($value, 'msg:"', '";', 0);
            }
        }
        echo "<tr><td width='3%' class='listt'> {$textss}\n\t\t\t<a href='?id={$id}&openruleset={$currentruleset}&act=toggle&ids={$counter}'>\n\t\t\t<img src='../themes/{$g['theme']}/images/icons/{$iconb}'\n\t\t\twidth='10' height='10' border='0'\n\t\t\ttitle='" . gettext("click to toggle enabled/disabled status") . "'></a>\n\t\t\t{$textse}\n\t\t       </td>\n\t\t       <td width='7%' class=\"listlr\">\n\t\t\t\t{$textss} {$sid} {$textse}\n\t\t       </td>\n\t\t       <td width='4%' class=\"listlr\">\n\t\t\t\t{$textss} {$protocol} {$textse}\n\t\t       </td>\n\t\t       <td width='15%' class=\"listlr\">\n\t\t\t\t{$textss} {$source} {$textse}\n\t\t       </td>\n\t\t       <td width='10%' class=\"listlr\">\n\t\t\t\t{$textss} {$source_port} {$textse}\n\t\t       </td>\n\t\t       <td width='15%' class=\"listlr\">\n\t\t\t\t{$textss} {$destination} {$textse}\n\t\t       </td>\n\t\t       <td width='10%' class=\"listlr\">\n\t\t\t       {$textss} {$destination_port} {$textse}\n\t\t       </td>\n\t\t\t<td width='30%' class=\"listbg\"><font color=\"white\"> \n\t\t\t\t{$textss} {$message} {$textse}\n\t\t       </td>";
        ?>
			<td width='5%' valign="middle" nowrap class="list">
			<table border="0" cellspacing="0" cellpadding="1">
			<tr>
				<td><a href="javascript: void(0)"
					onclick="popup('snort_rules_edit.php?id=<?php 
        echo $id;
        ?>
&openruleset=<?php 
        echo $currentruleset;
        ?>
')"><img