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