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 日志,方便后续审计或分析。嗯,搞完收工。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
没有相关内容!
暂无评论...