Debian 上用 Node.js 日志提升安全性的实操方案
一 日志采集与结构化
const winston = require('winston');
const { combine, timestamp, json } = winston.format;
const logger = winston.createLogger({
level: process.env.NODE_ENV === 'production' ? 'info' : 'debug',
format: combine(timestamp(), json()),
transports: [
new winston.transports.File({ filename: '/var/log/nodejs/error.log', level: 'error' }),
new winston.transports.File({ filename: '/var/log/nodejs/combined.log' })
],
exceptionHandlers: [new winston.transports.File({ filename: '/var/log/nodejs/exceptions.log' })],
rejectionHandlers: [new winston.transports.File({ filename: '/var/log/nodejs/rejections.log' })]
});
if (process.env.NODE_ENV !== 'production') {
logger.add(new winston.transports.Console({ format: winston.format.simple() }));
}
二 存储轮转与访问控制
/var/log/nodejs/*.log {
daily
missingok
rotate 7
compress
notifempty
create 0640 root adm
}
如使用进程管理工具,也可采用 pm2-logrotate。sudo chmod 640 /var/log/nodejs/*.log
sudo chown root:adm /var/log/nodejs/*.log
三 集中化与实时监控告警
四 审计分析与响应
五 安全配置与运行加固清单