SSH登录日志清理
近期监测服务器,反正异常登录的很多(失败:1516594(今日新增:12367)),导致部分界面加载很慢,遂有个想法清理下相关日志。
解决方案
分析
SSH登录记录通常存储在以下文件中:
/var/log/auth.log
(Debian/Ubuntu)/var/log/secure
(CentOS/RHEL)
嗯,那就简单了,写个清理的脚本(为啥不一步步的操作,因为懒)
#!/bin/bash # SSH日志清理脚本 for Rocky Linux 8 # 需要root权限执行 # 检查是否为root用户 if [ "$(id -u)" -ne 0 ]; then echo "错误: 此脚本必须以root用户身份运行!" exit 1 fi # 定义日志文件路径 AUTH_LOG="/var/log/secure" WTMP="/var/log/wtmp" BTMP="/var/log/btmp" LASTLOG="/var/log/lastlog" # 备份目录 BACKUP_DIR="/var/log/ssh_log_backup" BACKUP_TIMESTAMP=$(date +"%Y%m%d_%H%M%S") # 创建备份目录 mkdir -p "$BACKUP_DIR" echo "正在备份日志文件..." # 备份日志文件 cp "$AUTH_LOG" "$BACKUP_DIR/secure_$BACKUP_TIMESTAMP.log" 2>/dev/null cp "$WTMP" "$BACKUP_DIR/wtmp_$BACKUP_TIMESTAMP.log" 2>/dev/null cp "$BTMP" "$BACKUP_DIR/btmp_$BACKUP_TIMESTAMP.log" 2>/dev/null cp "$LASTLOG" "$BACKUP_DIR/lastlog_$BACKUP_TIMESTAMP.log" 2>/dev/null echo "正在清理日志文件..." # 清理日志文件 > "$AUTH_LOG" > "$WTMP" > "$BTMP" > "$LASTLOG" # 清理journal日志(保留最近7天) echo "正在清理journal日志..." journalctl --vacuum-time=7d # 重启相关服务 echo "正在重启日志服务..." systemctl restart rsyslog systemctl restart systemd-journald echo "日志清理完成!" echo "备份文件保存在: $BACKUP_DIR"
脚本释义
自动备份原始日志文件到
/var/log/ssh_log_backup
目录清理以下日志文件:
/var/log/secure
(SSH认证日志)/var/log/wtmp
(成功登录记录)/var/log/btmp
(失败登录尝试)/var/log/lastlog
(用户最后登录信息)
清理systemd journal日志(保留最近7天)
自动重启相关日志服务
但是,就这么清理了,后续审计或分析就GG了,还是先导出。
修改脚本
#!/bin/bash # 检查 root 权限 if [ "$(id -u)" -ne 0 ]; then echo "错误: 必须使用 root 运行!" exit 1 fi # 备份目录 BACKUP_DIR="/var/log/ssh_log_backup/$(date +"%Y%m%d_%H%M%S")" mkdir -p "$BACKUP_DIR" # 1. 导出 /var/log/secure cp /var/log/secure "$BACKUP_DIR/ssh_auth.log" # 2. 导出 last 登录记录 last > "$BACKUP_DIR/last_logins.txt" # 3. 导出失败登录记录 lastb > "$BACKUP_DIR/failed_logins.txt" # 4. 导出 lastlog lastlog > "$BACKUP_DIR/lastlog.txt" # 5. 导出 journalctl SSH 日志 journalctl -u sshd --since "1 week ago" > "$BACKUP_DIR/sshd_journal.log" echo "SSH 日志已导出到: $BACKUP_DIR"
这样,应该就差不多了,导出的日志会存放在 /var/log/ssh_log_backup/YYYYMMDD_HHMMSS/
目录下。
日志来源 | 导出命令 | 用途 |
---|---|---|
/var/log/secure | cp /var/log/secure backup.log | SSH 认证日志 |
/var/log/wtmp | last > logins.txt | 成功登录记录 |
/var/log/btmp | lastb > failed.txt | 失败登录尝试 |
/var/log/lastlog | lastlog > lastlog.txt | 用户最后登录时间 |
journalctl | journalctl -u sshd > sshd.log | Systemd 管理的 SSH 日志 |
这样就可以在清理前先备份 SSH 日志,方便后续审计或分析。嗯,搞完收工。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...