Linux系统中有几个关键日志文件需要特别关注:
认证日志:
/var/log/auth.log
(Debian/Ubuntu)/var/log/secure
(RHEL/CentOS)系统日志:
/var/log/syslog
(Debian/Ubuntu)/var/log/messages
(RHEL/CentOS)内核日志:
/var/log/kern.log
审计日志:
/var/log/audit/audit.log
使用logrotate进行日志管理:
# /etc/logrotate.conf示例配置
/var/log/syslog {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 640 syslog adm
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
考虑使用以下工具实现日志集中管理: - Rsyslog:轻量级日志转发 - ELK Stack (Elasticsearch, Logstash, Kibana):完整日志解决方案 - Graylog:专业日志管理平台 - Fluentd:统一日志收集层
# 安装auditd
sudo apt-get install auditd # Debian/Ubuntu
sudo yum install audit # RHEL/CentOS
# 启动并设置开机自启
sudo systemctl enable --now auditd
编辑/etc/audit/audit.rules
:
# 监控用户登录事件
-a always,exit -F arch=b64 -S execve -k user_exec
# 监控/etc/passwd和/etc/shadow文件修改
-w /etc/passwd -p wa -k passwd_change
-w /etc/shadow -p wa -k shadow_change
# 监控sudo使用
-w /etc/sudoers -p wa -k sudoers_change
-w /usr/bin/sudo -p x -k sudo_exec
# 监控SSH配置修改
-w /etc/ssh/sshd_config -p wa -k sshd_config
# 查看当前审计规则
sudo auditctl -l
# 搜索特定事件的审计日志
ausearch -k passwd_change
# 生成审计报告
aureport --summary
使用last和lastb命令检查登录:
# 查看成功登录记录
last -ai
# 查看失败登录尝试
lastb -ai
# 统计失败登录
lastb | awk '{print $3}' | sort | uniq -c | sort -nr
# 安装Fail2Ban
sudo apt-get install fail2ban # Debian/Ubuntu
sudo yum install fail2ban # RHEL/CentOS
# 自定义配置
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
#!/bin/bash
LOG_FILE="/var/log/auth.log"
THRESHOLD=5
RECIPIENT="admin@example.com"
failed_attempts=$(grep "Failed password" $LOG_FILE | wc -l)
if [ $failed_attempts -gt $THRESHOLD ]; then
echo "警报: 检测到$failed_attempts次SSH登录失败尝试" | \
mail -s "SSH登录异常警告" $RECIPIENT
fi
#!/bin/bash
# 需要先安装aide并初始化数据库
# sudo apt-get install aide
# sudo aideinit
CONFIG="/etc/aide/aide.conf"
DB="/var/lib/aide/aide.db"
NEW_DB="/var/lib/aide/aide.db.new"
aide -c $CONFIG --update
mv $NEW_DB $DB
# 检查差异
aide -c $CONFIG --check | mail -s "文件完整性检查报告" $RECIPIENT
通过实施这些日志管理和安全审计措施,您可以显著提高Linux服务器的安全性,并能够快速检测和响应潜在的安全威胁。