一、清除登录日志
登录日志是记录用户登录行为的核心凭证,需针对性清理各类日志文件及相关记录。
1. 核心日志文件及处理方式
(1)二进制日志(记录登录 / 注销及最后登录信息)
-
/var/log/wtmp
:对应last
命令,记录所有用户登录、注销信息(二进制格式)。 处理方式:需用专业工具(如 Linux 登录日志修改脚本)解析二进制结构,精准定位并修改登录记录。 -
/var/log/lastlog
:对应lastlog
命令,记录所有用户最后一次登录时间(二进制格式)。 处理方式:同/var/log/wtmp
,通过专业工具修改或清除登录时间记录。
(2)明文日志(记录登录认证及系统安全相关信息)
-
/var/log/messages
:记录系统启动后各类信息(含登录相关内容)。 -
/var/log/secure
:记录用户登录认证的详细过程(安全相关核心日志)。 -
/var/log/auth.log
:与/var/log/secure
功能类似,侧重认证授权记录(部分系统适用)。 -
/var/log/audit/*
:系统审计日志目录,可能包含登录操作审计信息。
处理方式:可直接用文本工具修改:
-
vi
:打开文件后查找并删除敏感行; -
sed
:通过正则表达式批量处理(见下文常用命令)。
(3)登录失败日志(二进制,记录登录失败信息)
-
/var/log/btmp
:记录所有登录失败记录(二进制格式)。
处理方式:
-
清空:
echo > /var/log/btmp
(用空内容覆盖文件); -
导出修改再导入:
# 导出为文本 utmpdump /var/log/btmp > /var/log/btmp.file # 编辑文本(删除/修改记录) vi /var/log/btmp.file # 导回二进制 utmpdump -r < /var/log/btmp.file > /var/log/btmp
2. 常用 sed
命令(明文日志处理)
-
删除含特定 IP 的行:
# 例:删除/var/log/messages中含192.168.108.33的行 sed -i '/192.168.108.33/'d /var/log/messages
(
-i
直接修改原文件,/IP/
匹配行,d
表示删除) -
全局替换登录 IP:
# 例:将/var/log/secure中192.168.166.85替换为192.168.1.1 sed -i 's/192.168.166.85/192.168.1.1/g' /var/log/secure
(
s
表示替换,g
表示全局替换)
3. 隐藏远程 SSH 登录记录
-
隐身登录:减少被
w
、who
、last
检测的概率:ssh -T root@192.168.0.1 /bin/bash -i
(
-T
禁止分配伪终端,/bin/bash -i
启动交互式 Shell) -
不记录 SSH 公钥:避免本地留存远程主机公钥:
ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash -i
-
配合日志清理:用上述
sed
命令删除/var/log/auth.log
等文件中含特定 IP / 用户的记录(谨慎操作,避免过度清空引起警觉)。
二、清除服务日志
根据入侵涉及的服务,针对性清理其日志文件。
1. Web 服务日志
-
位置:Apache 日志通常在
/var/log/httpd
(含访问日志access_log
和错误日志error_log
)。 -
处理:用
sed
删除含入侵 IP / 操作的行,或清空文件(同明文日志处理方式)。
2. 数据库日志
-
位置:多位于数据库根目录或
/var/log
(因数据库类型而异)。 -
示例(MySQL):
-
错误日志(
error.log
):记录运行错误,可能含漏洞利用痕迹; -
二进制日志(
binlog
):记录写操作,需清理入侵相关记录。
-
3. 计划任务日志
-
位置:
/var/log/cron
(记录计划任务执行信息)。 -
处理:删除与入侵操作相关的记录(如通过计划任务维持权限的痕迹)。
4. 特殊服务记录
-
若将后门注册为服务,
/var/log/messages
可能记录其启动信息(如隧道工具通信记录),需同步清理。
三、清除历史命令
避免命令记录暴露入侵操作,需处理历史命令文件及缓冲区。
1. 关键文件
-
~/.bash_history
:存储用户执行过的历史命令(当前会话命令暂存缓冲区,退出时写入文件)。
2. 清除方法
-
防止缓冲区写入:退出会话时用
kill -9 $$
强制终止 Shell 进程(避免缓冲区命令写入文件)。 -
处理已写入文件:用
sed
删除敏感行(如删除含rm -rf /
的行):sed -i '/rm -rf \//'d ~/.bash_history
(不建议全清空,易引起怀疑)。
3. 实时控制命令记录
-
禁用当前会话记录:
unset HISTFILE
(取消历史文件设置)。 -
忽略空格前缀命令:
export HISTCONTROL=ignorespace
(命令前加空格则不记录)。
四、避免使用 vim
vim
会在 ~/.viminfo
中记录操作痕迹(如打开的文件路径、搜索字符串、删除内容等),易被管理员追溯。 建议替代工具:
-
cat
:简单查看文件内容; -
sed
:批量替换或删除文本内容。
五、修改文件时间
文件时间(通过 stat
命令查看)可能暴露修改痕迹,需同步调整。
1. 时间类型
-
atime
(访问时间):读取文件内容时更新(如cat
查看)。 -
mtime
(修改时间):文件内容改变时更新(如编辑保存)。 -
ctime
(改动时间):文件权限 / 属性改变时更新(如chmod
、chown
)。
2. 修改技巧
-
基础同步:用
touch -r
使目标文件时间与参照文件一致(如touch -r A B
让 B 的atime
和mtime
同 A)。 -
解决
ctime
问题(touch -r
会更新ctime
为当前时间):# 1. 临时修改系统时间 date -s "20140712 18:30:50" # 2. 同步文件时间(参照文件ref_file,目标文件target_file) touch -r ref_file target_file # 3. 恢复系统时间(硬件时钟同步到系统时间) hwclock --hctosys
六、安全删除文件
普通 rm
可能被数据恢复工具还原,需用专业工具彻底删除。
1. shred
命令
-
功能:用随机数据多次覆盖文件后删除。
-
示例:
shred -f -u -z -v -n 8 1.txt
(
-f
强制删除,-u
移除文件,-z
最后用零值覆盖,-v
显示过程,-n 8
覆盖 8 次)。
2. dd
命令
-
功能:用零值数据覆盖文件 / 分区。
-
示例:
dd if=/dev/zero of=目标文件 bs=1M count=100
(
if=/dev/zero
读零值,bs=1M
块大小,count=100
写入 100 块)。
3. wipe
工具
-
功能:用特殊模式重复写文件,安全擦除磁性介质数据。
-
用法:
wipe filename
(直接擦除指定文件)。
4. Secure-Delete
工具集
-
包含
srm
(安全删除文件)、smem
(擦除内存数据)、sfill
(填充磁盘空闲空间)、sswap
(擦除交换空间)等。 -
示例(
srm
):srm 敏感文件
(多次覆盖后删除)。
七、清理临时文件与缓存
入侵过程中产生的临时文件和缓存可能含敏感信息,需针对性清理。
1. 临时文件
-
位置:多在
/tmp
或用户临时目录(如~/.cache
)。 -
处理:
-
手动删除:
rm /tmp/*.tmp
(删除 /tmp 下所有.tmp 文件); -
自动清理:
tmpwatch -v -t 240 /tmp
(删除 /tmp 下超过 240 分钟未访问的文件,-v
显示过程)。
-
2. 缓存文件
-
系统缓存:Debian/Ubuntu 中用
sudo apt-get clean
清理软件包缓存。 -
浏览器缓存:
-
Firefox:通过 “隐私与安全” 设置手动清除;
-
Chrome:快捷键
Ctrl + Shift + Delete
调出清理窗口,选择清除缓存。
-
八、应对日志监控与审计
部分系统部署 auditd
等工具监控日志修改,需提前规划策略。
1. 备份原始日志
修改前备份日志(如 cp /var/log/auth.log /tmp/auth.log.bak
),便于必要时恢复(减少怀疑)。
2. 伪造正常日志
删除敏感记录后,按日志格式插入正常条目(需匹配时间戳、主机名、消息格式等),模拟系统正常运行状态。