Debian Apache日志安全策略
严格限制日志文件的访问权限,确保只有授权用户和组能读取或写入。Apache日志(如/var/log/apache2/access.log、/var/log/apache2/error.log)的属主应设为www-data(Apache默认运行用户),属组设为adm(系统管理组),权限设置为640(属主可读写,属组可读,其他用户无权限)。例如:
sudo chown www-data:adm /var/log/apache2/*.log
sudo chmod 640 /var/log/apache2/*.log
此外,可使用chattr命令设置日志文件的不可修改(i)和不可删除(a)属性,防止未授权篡改或删除:
sudo chattr +ia /var/log/apache2/*.log
(注:需用chattr -ia解除属性,修改日志时需临时移除)
使用logrotate工具自动化日志轮转,避免单个日志文件过大导致磁盘空间耗尽或日志信息泄露。编辑/etc/logrotate.d/apache2文件,配置如下策略:
daily)或按文件大小(如size 100M)轮转;rotate 7);gzip压缩(compress),节省存储空间;640,属主root,属组adm(create 640 root adm);notifempty)。/var/log/apache2/*.log {
daily
missingok
rotate 7
compress
notifempty
create 640 root adm
sharedscripts
postrotate
systemctl reload apache2 > /dev/null
endscript
}
测试配置有效性:sudo logrotate -d /etc/logrotate.conf(测试模式),确认无误后重载logrotate:sudo systemctl reload logrotate。
采用安全的日志格式记录关键信息,便于后续分析与追踪。推荐使用combined格式(包含客户端IP、时间戳、请求方法、URL、状态码、Referer、User-Agent等),在Apache配置文件(如/etc/apache2/apache2.conf或/etc/apache2/sites-available/000-default.conf)中添加:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog ${APACHE_LOG_DIR}/access.log combined
ErrorLog ${APACHE_LOG_DIR}/error.log
隐藏Apache版本信息,降低针对性攻击风险:
ServerSignature Off
ServerTokens Prod
禁用不必要的模块(如status、autoindex),减少暴露的敏感信息:
sudo a2dismod status autoindex
sudo systemctl restart apache2
部署日志分析工具实现实时监控,及时发现异常活动(如大量404错误、SQL注入尝试、暴力破解)。常用工具包括:
sudo logcheck -d /etc/logcheck/ignore.d.server/apache2)。www-data用户(低权限)运行,避免使用root;ufw(Uncomplicated Firewall)仅开放必要端口(HTTP 80、HTTPS 443),拒绝其他端口访问:sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
libapache2-mod-php),修复已知安全漏洞:sudo apt update && sudo apt upgrade apache2
sudo a2enmod ssl),配置/etc/apache2/sites-available/default-ssl.conf,确保数据传输安全。使用auditd(Linux审计框架)监控对日志文件的访问和修改,记录操作日志(如who、when、what)。安装并配置auditd:
sudo apt install auditd
sudo auditctl -w /var/log/apache2/ -p wa -k apache2_logs
查看审计日志:ausearch -k apache2_logs。定期备份日志文件至安全存储(如云存储、离线介质),确保日志完整性,便于事后追溯。