18 lines
5.6 KiB
PHP
18 lines
5.6 KiB
PHP
<?php
|
|
include 'auth.php';
|
|
require_once __DIR__ . '/includes/config_manager.php';
|
|
$page_title='Anti-Ransomware - BastionGuard WebUI'; $active_page='antiransomware.php';
|
|
$cfg = bg_read_json('antiransomware.json', ['use_yara'=>true,'use_sanesecurity'=>true,'dirs'=>['/home'],'interval'=>15,'ignore_paths'=>['/proc','/sys','/dev'],'ignore_ext'=>['tmp','log'],'susp_ext'=>['locked','encrypted','crypt']]);
|
|
$output='';
|
|
if ($_SERVER['REQUEST_METHOD']==='POST') { csrf_validate(); $action=$_POST['action']??'';
|
|
if ($action==='save') { $cfg['use_yara']=!empty($_POST['use_yara']); $cfg['use_sanesecurity']=!empty($_POST['use_sanesecurity']); $cfg['dirs']=bg_normalize_lines($_POST['dirs']??''); $cfg['interval']=max(1,(int)($_POST['interval']??15)); $cfg['ignore_paths']=bg_normalize_lines($_POST['ignore_paths']??''); $cfg['ignore_ext']=bg_normalize_lines($_POST['ignore_ext']??''); $cfg['susp_ext']=bg_normalize_lines($_POST['susp_ext']??''); bg_write_json('antiransomware.json',$cfg); bg_flash('success','Anti-Ransomware configuration saved.'); bg_redirect('antiransomware.php'); }
|
|
elseif (in_array($action,['start','stop','restart'],true)) { $res=bg_service_action(['BastionGuard-ransomware-realtime.service','bastionguard-ransomware-realtime.service'],$action); bg_flash($res['code']===0?'success':'warning',$res['output']?:'Command executed.'); bg_redirect('antiransomware.php'); }
|
|
elseif ($action==='scan') { $path=trim($_POST['path']??''); if($path===''||!file_exists($path)) $output='Invalid path.'; else { $bin = bg_cmd_exists('BastionGuard-ransomware-scanner') ? 'BastionGuard-ransomware-scanner ' : (bg_cmd_exists('/usr/bin/BastionGuard-ransomware-scanner')?'/usr/bin/BastionGuard-ransomware-scanner ':''); $cmd = $bin ? 'sudo -n '.$bin.escapeshellarg($path).' 2>&1' : 'sudo -n '.(bg_cmd_exists('clamdscan')?'clamdscan --fdpass ':'clamscan -r ').escapeshellarg($path).' 2>&1'; $res=bg_run($cmd,600); $output=$res['output']."\n\nExit code: ".$res['code']; } }
|
|
elseif ($action==='update-yara') { $res=bg_admin_helper(['update-yara', bg_detect_desktop_user()], 900); $output=$res['output']."\n\nExit code: ".$res['code']; }
|
|
elseif ($action==='update-sanesecurity') { $res=bg_admin_helper(['update-sanesecurity', bg_detect_desktop_user()], 900); $output=$res['output']."\n\nExit code: ".$res['code']; }
|
|
}
|
|
$st=bg_service_status(['BastionGuard-ransomware-realtime.service','bastionguard-ransomware-realtime.service']); $logs=bg_journal(['BastionGuard-ransomware-realtime.service','bastionguard-ransomware-realtime.service'],120);
|
|
include 'includes/header.php'; include 'includes/sidebar.php'; ?>
|
|
<div class="page-title"><div><h1>Anti-Ransomware</h1><p>Heuristic scanning, YARA rules, Sanesecurity DB and realtime service.</p></div><?= bg_status_badge($st['active']) ?></div>
|
|
<div class="row g-4"><div class="col-lg-5"><div class="card"><div class="card-body"><h5>Realtime service</h5><form method="post" class="d-flex gap-2 flex-wrap"><?php csrf_field(); ?><button name="action" value="start" class="btn btn-success">Start</button><button name="action" value="stop" class="btn btn-outline-danger">Stop</button><button name="action" value="restart" class="btn btn-outline-primary">Restart</button><button name="action" value="update-yara" class="btn btn-outline-secondary">Update YARA</button><button name="action" value="update-sanesecurity" class="btn btn-outline-secondary">Update Sanesecurity DB</button></form><hr><form method="post"><?php csrf_field(); ?><input type="hidden" name="action" value="scan"><label class="form-label">File or folder to analyze</label><input class="form-control" name="path" placeholder="/home/..."><button class="btn btn-primary mt-2">Scan</button></form></div></div></div><div class="col-lg-7"><div class="card"><div class="card-body"><h5>Scanner configuration</h5><form method="post"><?php csrf_field(); ?><input type="hidden" name="action" value="save"><div class="row"><div class="col-md-6"><div class="form-check"><input class="form-check-input" type="checkbox" name="use_yara" <?= $cfg['use_yara']?'checked':'' ?>><label class="form-check-label">Use YARA rules</label></div><div class="form-check mb-3"><input class="form-check-input" type="checkbox" name="use_sanesecurity" <?= $cfg['use_sanesecurity']?'checked':'' ?>><label class="form-check-label">Use Sanesecurity DB</label></div><label class="form-label">Scan interval in minutes</label><input class="form-control" type="number" name="interval" value="<?= bg_e($cfg['interval']) ?>"></div><div class="col-md-6"><label class="form-label">Folders to scan</label><textarea class="form-control" name="dirs" rows="4"><?= bg_e(implode("\n",$cfg['dirs'])) ?></textarea></div></div><div class="row mt-3"><div class="col-md-4"><label class="form-label">Paths to ignore</label><textarea class="form-control" name="ignore_paths" rows="3"><?= bg_e(implode("\n",$cfg['ignore_paths'])) ?></textarea></div><div class="col-md-4"><label class="form-label">Ignored extensions</label><textarea class="form-control" name="ignore_ext" rows="3"><?= bg_e(implode("\n",$cfg['ignore_ext'])) ?></textarea></div><div class="col-md-4"><label class="form-label">Suspicious extensions</label><textarea class="form-control" name="susp_ext" rows="3"><?= bg_e(implode("\n",$cfg['susp_ext'])) ?></textarea></div></div><button class="btn btn-outline-primary mt-3">Save configuration</button></form></div></div></div><?php if($output): ?><div class="col-12"><div class="card"><div class="card-body"><h5>Output</h5><?php bg_render_log($output); ?></div></div></div><?php endif; ?><div class="col-12"><div class="card"><div class="card-body"><h5>Anti-Ransomware log</h5><?php bg_render_log($logs); ?></div></div></div></div>
|
|
<?php include 'includes/footer.php'; ?>
|