more exact checking
This commit is contained in:
parent
40921b58ff
commit
7f18482566
22
lib/ssh.js
22
lib/ssh.js
|
@ -28,14 +28,14 @@ function sshAllowsPassword(user) {
|
||||||
stdout = (stdout||'').toString('utf8');
|
stdout = (stdout||'').toString('utf8');
|
||||||
stderr = (stderr||'').toString('utf8');
|
stderr = (stderr||'').toString('utf8');
|
||||||
if (/\bpassword\b/.test(stdout) || /\bpassword\b/.test(stderr)) {
|
if (/\bpassword\b/.test(stdout) || /\bpassword\b/.test(stderr)) {
|
||||||
resolve(true);
|
resolve('yes');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (/\bAuthentications\b/.test(stdout) || /\bAuthentications\b/.test(stderr)) {
|
if (/\bAuthentications\b/.test(stdout) || /\bAuthentications\b/.test(stderr)) {
|
||||||
resolve(false);
|
resolve('no');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
resolve();
|
resolve('maybe');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -43,21 +43,21 @@ function sshAllowsPassword(user) {
|
||||||
module.exports.checkSecurity = function () {
|
module.exports.checkSecurity = function () {
|
||||||
var conf = {};
|
var conf = {};
|
||||||
var sshdConf = '/etc/ssh/sshd_config';
|
var sshdConf = '/etc/ssh/sshd_config';
|
||||||
var noRootPasswordRe = /(^|[\r\n]+)\s*PermitRootLogin\s+(prohibit-password|without-password|no)\s*/i;
|
var noRootPasswordRe = /(?:^|[\r\n]+)\s*PermitRootLogin\s+(prohibit-password|without-password|no)\s*/i;
|
||||||
var noPasswordRe = /(^|[\r\n]+)\s*PasswordAuthentication\s+no\s*/i;
|
var noPasswordRe = /(?:^|[\r\n]+)\s*PasswordAuthentication\s+(no)\s*/i;
|
||||||
return readFile(sshdConf, null).then(function (sshd) {
|
return readFile(sshdConf, null).then(function (sshd) {
|
||||||
sshd = sshd.toString('utf8');
|
sshd = sshd.toString('utf8');
|
||||||
conf.disallowPasswordRoot = noRootPasswordRe.test(sshd);
|
var match;
|
||||||
conf.disallowPassword = noPasswordRe.test(sshd);
|
match = sshd.match(noRootPasswordRe);
|
||||||
|
conf.permit_root_login = match ? match[1] : 'yes';
|
||||||
|
match = sshd.match(noPasswordRe);
|
||||||
|
conf.password_authentication = match ? match[1] : 'yes';
|
||||||
}).catch(function () {
|
}).catch(function () {
|
||||||
// ignore error as that might not be the correct sshd_config location
|
// ignore error as that might not be the correct sshd_config location
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
var doesntExist = crypto.randomBytes(16).toString('hex');
|
var doesntExist = crypto.randomBytes(16).toString('hex');
|
||||||
return sshAllowsPassword(doesntExist).then(function (maybe) {
|
return sshAllowsPassword(doesntExist).then(function (maybe) {
|
||||||
conf.allowsPassword = maybe;
|
conf.requests_password = maybe;
|
||||||
return sshAllowsPassword('root').then(function (maybe) {
|
|
||||||
conf.allowsRootPassword = maybe;
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
return conf;
|
return conf;
|
||||||
|
|
Loading…
Reference in New Issue