【杂项】ssh隐匿登录

0x01 清除 Bash 命令历史记录
为防止命令行操作被记录,可在登录后立即禁用 Bash 的历史功能:
unset HISTORY HISTFILE HISTSAVE HISTLOG HISTZONE HISTORY HISTLOGexport HISTFILE=/dev/nullexport HISTSIZE=0export HISTFILESIZE=0说明:
unset命令用于清除可能影响历史记录的环境变量。HISTFILE=/dev/null将命令历史文件重定向至空设备,确保所有输入命令不会写入磁盘。HISTSIZE=0和HISTFILESIZE=0分别禁用内存中的历史命令缓存和文件中的持久化存储。
建议:该配置可临时生效。若需永久禁用,可将相关设置写入用户的 shell 配置文件(如
.bashrc或.profile),但应谨慎操作,避免影响正常运维。
0x02 隐藏登录 IP 地址
系统命令 last 读取 /var/log/lastlog 文件显示用户登录记录。此文件为二进制格式,无法直接编辑。以下是两种处理方式:
方法一:删除 lastlog 文件
sudo rm /var/log/lastlog注意事项:
- 删除该文件会清除所有用户的最近登录记录。
- 部分系统在重启或执行某些认证操作时会自动重建该文件。
- 此类操作可能触发日志完整性检测机制,引起管理员注意。
- 不建议在生产环境中随意删除系统日志文件,尤其是未经审计许可的操作。
方法二:通过 SSH 端口转发隐藏真实 IP
使用本地端口转发建立代理连接:
ssh -N -L 2212:<目标主机IP>:22 root@<目标主机>随后通过本地端口连接目标系统:
ssh -p 2212 root@127.0.0.1原理:
- 该命令将本地的 2212 端口映射到目标主机的 22 端口。
- 登录时,系统记录的来源 IP 是
127.0.0.1,即本地回环地址,而非你的真实公网 IP。 last或who命令显示的将是隧道末端的地址,从而实现一定程度的身份隐藏。
补充说明:若目标系统启用了 PAM 审计模块或
auditd等内核级审计工具,仍有可能记录原始连接信息。此方法仅适用于基础日志规避。
0x03 清理认证日志(auth.log)
认证相关的登录行为通常记录在 /var/log/auth.log(Debian/Ubuntu 系统)或 /var/log/secure(RHEL/CentOS 系统)中。可通过以下方式移除特定 IP 的记录。
删除包含指定 IP 的日志行:
sudo sed -i '/192\.168\.1\.1/d' /var/log/auth.log注意:IP 地址中的点号需用反斜杠转义,否则会被当作正则表达式中的通配符处理。
替代方法:使用 grep 过滤并重写文件
sudo grep -v '192.168.1.100' /var/log/auth.log > /tmp/auth.logsudo mv /tmp/auth.log /var/log/auth.log对于使用 systemd 的系统:
还需清理 journald 的内存日志:
sudo journalctl --vacuum-time=1d该命令会删除超过一天的日志条目,释放存储空间。
提醒:
- 修改认证日志属于高风险行为,容易被入侵检测系统(IDS)、安全信息与事件管理系统(SIEM)识别。
- 现代安全架构普遍采用集中式日志收集(如 ELK、Splunk、rsyslog 转发等),即使本地日志被清除,远程日志服务器仍可能保留副本。
- 任何日志篡改行为在未经授权的情况下均可能违反法律法规。
0x04 清除 wtmp 与 btmp 登录记录
Linux 系统中还有两个重要的二进制日志文件用于记录登录活动:
/var/log/wtmp:记录所有成功登录和登出的事件,last命令读取此文件。/var/log/btmp:记录失败的登录尝试,lastb命令可查看其内容。
由于这两个文件为二进制格式,不能使用文本编辑器直接修改。
清空日志文件:
推荐使用 truncate 命令将文件大小置零:
sudo truncate -s 0 /var/log/wtmpsudo truncate -s 0 /var/log/btmp替代方式(谨慎使用):
也可删除后创建新的空文件,并恢复正确权限:
sudo rm /var/log/wtmpsudo touch /var/log/wtmpsudo chmod 644 /var/log/wtmp对 btmp 文件操作类似。
提示:
truncate是更安全的选择,避免因删除文件导致某些服务无法写入日志。
0x05 隐藏进程痕迹
运行扫描工具、反弹 shell 或提权程序时,进程名可能出现在 ps、top 等监控命令输出中,暴露操作行为。
检测当前进程:
ps aux | grep pythontop -b -n 1 | grep <your-tool>隐藏进程名称:
利用 exec 系统调用覆盖当前进程名:
exec -a "sshd" /path/to/your-tool执行后,该进程在 ps 输出中将显示为 sshd,具有一定迷惑性。
说明:这种方法仅修改进程的“显示名称”(argv[0]),不会改变实际的可执行文件路径或内存映像。高级监控工具(如
auditd、EDR 软件)仍可通过系统调用追踪其真实行为。
0x06 结语
本文介绍的技术主要用于理解系统日志机制和攻击者可能采取的规避手段,帮助系统管理员加强日志保护与入侵检测能力。需要强调的是:
- 所有日志清理操作都应仅在授权测试环境或合法合规前提下进行。
- 在真实生产系统中篡改或删除日志,不仅可能破坏系统稳定性,还可能触犯法律。
- 强烈建议部署集中式日志审计、文件完整性监控(FIM)和实时告警机制,以防范未授权访问和痕迹清除行为。
了解攻击,是为了更好地防御。安全的本质,始终是攻防之间的持续博弈。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!















加载更多…