t
This commit is contained in:
parent
4c4e767ec6
commit
9d70afb4cc
42 changed files with 1266 additions and 630 deletions
33
test/windows-host-hardening-smoke-test.js
Normal file
33
test/windows-host-hardening-smoke-test.js
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
'use strict';
|
||||
const assert=require('assert/strict');
|
||||
const fs=require('fs');
|
||||
const os=require('os');
|
||||
const path=require('path');
|
||||
const {spawnSync}=require('child_process');
|
||||
|
||||
if(process.platform!=='win32'){
|
||||
console.log('Windows host-hardening smoke test skipped on this platform');
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
const root=fs.mkdtempSync(path.join(os.tmpdir(),'linkfield-host-hardening-'));
|
||||
try{
|
||||
const apacheRoot=path.join(root,'Apache24'),apacheConfig=path.join(apacheRoot,'conf','httpd.conf'),phpIni=path.join(root,'php.ini');
|
||||
fs.mkdirSync(path.dirname(apacheConfig),{recursive:true});
|
||||
fs.writeFileSync(apacheConfig,'Listen 80\nServerSignature On\n');
|
||||
fs.writeFileSync(phpIni,'expose_php = On\n');
|
||||
const script=path.join(__dirname,'..','scripts','harden-windows-host.ps1');
|
||||
const args=['-NoProfile','-NonInteractive','-ExecutionPolicy','Bypass','-File',script,'-ApacheConfig',apacheConfig,'-PhpIni',phpIni,'-Apply','-SkipApacheSyntaxCheck'];
|
||||
const first=spawnSync('powershell.exe',args,{encoding:'utf8'});assert.equal(first.status,0,first.stderr||first.stdout);
|
||||
const apache=fs.readFileSync(apacheConfig,'utf8'),php=fs.readFileSync(phpIni,'utf8');
|
||||
assert.match(apache,/BEGIN LINKFIELD HOST HARDENING[\s\S]*ServerTokens Prod[\s\S]*ServerSignature Off/);
|
||||
assert.match(php,/BEGIN LINKFIELD HOST HARDENING[\s\S]*expose_php = Off/);
|
||||
assert.equal((apache.match(/BEGIN LINKFIELD HOST HARDENING/g)||[]).length,1);
|
||||
assert.equal((php.match(/BEGIN LINKFIELD HOST HARDENING/g)||[]).length,1);
|
||||
assert(fs.readdirSync(path.dirname(apacheConfig)).some(name=>name.startsWith('httpd.conf.linkfield-backup-')));
|
||||
assert(fs.readdirSync(root).some(name=>name.startsWith('php.ini.linkfield-backup-')));
|
||||
const second=spawnSync('powershell.exe',args,{encoding:'utf8'});assert.equal(second.status,0,second.stderr||second.stdout);
|
||||
assert.equal((fs.readFileSync(apacheConfig,'utf8').match(/BEGIN LINKFIELD HOST HARDENING/g)||[]).length,1);
|
||||
assert.equal((fs.readFileSync(phpIni,'utf8').match(/BEGIN LINKFIELD HOST HARDENING/g)||[]).length,1);
|
||||
}finally{fs.rmSync(root,{recursive:true,force:true})}
|
||||
console.log('Windows Apache/PHP host hardening smoke test passed');
|
||||
Loading…
Add table
Add a link
Reference in a new issue