在 Debian 系统中,如果你想彻底清除 root 登录历史记录,如IP地址(包括 /var/log/wtmp
、/var/log/btmp
和 systemd-journald
日志),可以按照以下方法操作:
bash <(wget -qO- -o- https://testingcf.jsdelivr.net/gh/hadis898/allscript@main/clear_logs.sh)
步骤 | 操作 | 说明 |
---|---|---|
1 | 清空 /var/log/wtmp |
清除成功登录记录 |
2 | 清空 /var/log/btmp |
清除失败登录记录 |
3 | 清空 systemd-journald 日志 |
删除所有二进制日志 |
4 | 清空 /var/log/auth.log |
如果存在则清除 |
5 | 可选禁用 SSH 日志 | 修改 sshd_config |
/var/log/wtmp
(成功登录记录)wtmp
文件存储了所有用户的登录历史,可以用 last
命令查看。
清除方法:
# 清空 wtmp 文件(所有登录记录)
sudo echo > /var/log/wtmp
# 验证是否清除成功
sudo last root # 应该显示 "wtmp begins [空日期]"
/var/log/btmp
(失败登录记录)btmp
文件存储了失败的登录尝试,可以用 lastb
命令查看。
清除方法:
# 清空 btmp 文件
sudo echo > /var/log/btmp
# 验证是否清除成功
sudo lastb root # 应该显示 "btmp begins [空日期]"
systemd-journald
日志如果系统使用 journald
(现代 Debian 默认),执行:
# 删除所有日志(慎用!)
sudo journalctl --flush --rotate
sudo rm -rf /var/log/journal/*
sudo systemctl restart systemd-journald
# 或者只删除 SSH 相关日志
sudo journalctl --vacuum-time=1s -u sshd
--vacuum-time=1s
:删除 1 秒前的日志(几乎全部清除)-u sshd
:仅删除 SSH 日志/var/log/auth.log
(如果存在)如果系统使用 rsyslog
,可能会有 /var/log/auth.log
:
# 清空 auth.log
sudo echo > /var/log/auth.log
# 或者只删除 root 相关的记录
sudo sed -i '/root/d' /var/log/auth.log
如果你希望未来也不记录登录日志,可以修改 SSH 配置:
sudo nano /etc/ssh/sshd_config
修改以下行:
LogLevel QUIET # 关闭 SSH 日志
SyslogFacility AUTHPRIV
然后重启 SSH:
sudo systemctl restart sshd
# 检查 wtmp/btmp
sudo last root
sudo lastb root
# 检查 journald 日志
sudo journalctl -u sshd _UID=0
# 检查 auth.log(如果存在)
sudo grep "root" /var/log/auth.log
如果返回空结果或无记录,说明清除成功。
logrotate
)可能会备份日志,检查 /var/log/
下是否有 *.gz
或 *.old
文件。systemd-journald
可能会缓存部分日志在内存,重启后才会完全清除。文件/日志 | 清除方法 | 验证命令 |
---|---|---|
/var/log/wtmp |
sudo echo > /var/log/wtmp |
last root |
/var/log/btmp |
sudo echo > /var/log/btmp |
lastb root |
journald |
sudo journalctl --vacuum-time=1s |
journalctl -u sshd |
/var/log/auth.log |
sudo echo > /var/log/auth.log |
grep "root" auth.log |
如果你需要完全隐身,建议:
请勿非法用途,仅供研究。