00.01.Linux 应急响应:账号安全与入侵排查
一、账号安全基础
账号安全是 Linux 系统应急响应的核心环节,需重点关注用户信息文件、密码存储及关键配置。
1. /etc/passwd文件解析
/etc/passwd 是系统用户信息的核心文件,记录所有用户的基础配置。
格式如下:
account:password:UID:GID:GECOS:directory:shell
格式描述:
- 用户名(account):用户登录标识
- 密码(password):早期存储密码,现以
x代替,实际密码存于/etc/shadow - UID(用户 ID):用户唯一标识(
UID=0为超级用户) - GID(组 ID):用户所属主组标识
- GECOS:用户说明信息(如姓名、联系方式)
- directory:用户家目录路径
- shell:用户登录后默认 shell(如
/bin/bash为可登录 shell,/sbin/nologin为禁止登录)
示例如下:
root:x:0:0:root:/root:/bin/bash
常用命令:
# 查看可登录用户(默认shell为/bin/bash的用户)
cat /etc/passwd | grep /bin/bash
# 查看UID=0的特权用户(超级用户)
awk -F: '$3==0{print $1}' /etc/passwd
# 查看具有sudo权限的用户
more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
注意:无密码用户(
/etc/shadow密码字段为空)仅允许本机登录,远程 SSH 登录会被拒绝。
2. /etc/shadow 文件解析
/etc/shadow 存储用户加密密码及密码策略,权限为 000(仅 root 可读写)。
格式如下:
用户名:加密密码:密码最后修改日期:密码修改间隔:密码有效期:警告天数:宽限天数:账号失效时间:保留
示例如下: root:$6$oGs1PqhL2p3ZetrE$X7o7bzoouHQVSEmSgsYN5UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft7ql1WpkopY0UV9ajBwUt1DpYxTCVvI/:16809:0:99999:7:::
格式注释:
- 加密密码:
$6$表示使用 SHA-512 加密,$1$为 MD5,$2$为 Blowfish - 密码最后修改日期:从 1970-01-01 起的天数(示例中 16809 对应具体日期)
- 密码有效期:默认 99999 天(约 273 年),需根据安全策略调整
二、用户登录信息排查
通过命令查看当前登录状态及历史登录记录,定位可疑登录行为。
1. 当前登录用户及状态
# 查看当前登录用户(tty为本地登录,pts为远程登录)
who
# 显示登录用户及正在执行的命令
w
# 查看系统运行时长、登录用户数及负载
uptime
2. 历史登录记录排查
(1)最近登录成功的用户
last
# 说明:
# - "logged in" 表示用户仍在线
# - pts 对应SSH远程登录,tty对应本地控制台登录
# - 记录存储于 /var/log/wtmp 文件
(2)最近登录失败的用户
sudo lastb
# 说明:记录SSH或本地登录失败的尝试,存储于 /var/log/btmp 文件
# 注释:ssh表示从SSH远程登录 & tty表示从控制台登录
(3)所有用户最近一次登录信息
lastlog
# 显示每个用户最后登录的时间、IP及终端
注意:在排查服务器的时候,黑客没有在线,可以使用last命令排查黑客什么时间登录的有的黑客登录时,会将/var/log/wtmp和/var/log/btmp文件删除或者清空,这样我们就无法使用last命令获得有用的信息了。
安全加固:在黑客入侵之前,需提前执行
chattr +a /var/log/wtmp和chattr +a /var/log/btmp锁定文件(仅允许追加,禁止删除 / 修改)。
三、特权用户与 sudo 权限排查
/etc/sudoers 是 Linux 系统中用于配置 sudo 权限 的核心文件,它决定了哪些用户或用户组可以以其他用户(通常是 root)的身份执行命令。正确配置该文件对于系统安全和权限管理至关重要。
1. 特权用户排查9
# 查找UID=0的超级用户(除root外的特权用户均为可疑)
awk -F: '$3==0{print $1}' /etc/passwd
# 查找可远程登录的账号(密码字段不为空或已加密的用户)
awk '/\$1|\$6/{print $1}' /etc/shadow
2. sudo 权限用户排查
# 查看非注释、非空行中具有ALL权限的用户
more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
3. 账号处置
# 禁用账号(/etc/shadow 密码字段前加!,禁止登录)
usermod -L user
# 删除用户(保留家目录)
userdel user
# 彻底删除用户(含家目录)
userdel -r user
四、用户操作历史审计
通过 .bash_history 查看用户执行的命令,增强审计能力需手动配置。
1. 查看历史命令
# 查看指定用户的历史命令(以user为例)
cat /home/user/.bash_history
2. 增强历史命令记录信息
为历史命令添加 IP、时间、用户等信息,步骤如下:
# 1. 修改历史命令保存条数(默认1000条→10000条)
sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile
# 2. 在/etc/profile末尾添加配置
cat >> /etc/profile << EOF
USER_IP=\`who -u am i 2>/dev/null | awk '{print \$NF}' | sed -e 's/[()]//g'\`
if [ "\$USER_IP" = "" ]
then
USER_IP=\`hostname\`
fi
export HISTTIMEFORMAT="%F %T \$USER_IP \`whoami\` "
shopt -s histappend
export PROMPT_COMMAND="history -a"
EOF
# 3. 使配置生效
source /etc/profile
注意:
history -c仅清空内存中的历史记录,需手动删除.bash_history文件内容才能彻底清除。
五、进程与端口检查
定位可疑进程及异常端口连接,排查恶意程序。
1. 端口连接情况
# 查看所有TCP/UDP端口及关联进程(-a显示所有,-n数字端口,-tTCP,-uUDP,-l监听中,-p进程ID)
netstat -antlp | more
2. 进程分析
# 根据端口查找进程(以6666为例)
ps aux | grep 6666
# 查看进程对应的文件路径($PID为进程ID)
ls -l /proc/$PID/exe 或 file /proc/$PID/exe
# 根据PID查看进程详情
lsof -p $PID
# 通过服务名查看进程打开的文件
lsof -c sshd
# 通过端口号查看进程
lsof -i :22
# 强制终止进程
kill -9 $PID
注意:若可疑文件已删除但进程仍运行(内存进程),需通过
ps或lsof找到 PID 后强制终止。
六、开机启动项排查
黑客常通过开机启动项持久化入侵,需重点检查以下路径。
1. 运行级别与启动脚本
# 查看当前运行级别
runlevel
Linux 运行级别(0-6):
- 0:关机
- 1:单用户模式
- 2:多用户无网络
- 3:多用户命令行模式
- 4:未使用
- 5:图形界面模式
- 6:重启
2. 关键启动配置文件
# 查看rc.local脚本(开机执行的命令)
more /etc/rc.local
# 查看各运行级别的启动脚本软链接
ls -l /etc/rc.d/rc[0~6].d/
3. 开机启动配置方法
(1)通过 /etc/rc.local 配置
在 exit 0 前添加脚本命令,确保脚本有可执行权限(chmod +x 脚本路径)。
(2)通过 update-rc.d 配置
# 1. 在/etc/init.d目录创建后门脚本软链接
ln -s /home/b4yi/kali-6666.elf /etc/init.d/backdoor
# 2. 添加到启动项(defaults默认级别,99为执行序号,越大越晚执行)
sudo update-rc.d backdoor defaults 99
4. 入侵排查命令
more /etc/rc.local
more /etc/rc.d/rc[0~6].d
ls -l etc/rc.d/rc3.d/
七、计划任务排查
恶意计划任务是常见持久化手段,需检查以下路径。
1. 计划任务相关命令
# 列出当前用户的计划任务
crontab -l
# 删除当前用户的计划任务
crontab -r
2. 关键计划任务路径
# 系统级计划任务配置文件(仅root可修改)
/etc/crontab
# 用户级计划任务存储目录(以用户名命名)
/var/spool/cron/crontabs/
# 自定义计划任务目录
/etc/cron.d/
# 按时间执行的脚本目录(每小时/天/周/月)
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.monthly/
# anacron相关(延迟执行的计划任务)
/etc/anacrontab
/var/spool/anacron/
3. 排查命令
# 查看目录下所有计划任务脚本
more /etc/cron.daily/*
more /etc/cron.hourly/*
# 其他目录类似
八、异常文件检查
通过文件属性(名称、大小、时间、属主)定位可疑文件。
1. 按名称查找
# 精确查找
find / -name "a.Test"
# 模糊查找(通配符*)
find / -name "*.sh"
# 不区分大小写查找
find / -iname "test*"
2. 按大小查找
# 查找大于1000M的文件
find / -size +1000M
# 查找小于10M的文件
find / -size -10M
3. 按时间查找
# 查找最近1天内修改的文件(-mtime内容修改,-atime访问,-ctime状态修改)
find / -mtime -1 -ls | more
# 查找50天前修改的文件
find ./ -mtime +50 -ls
4. 按属主 / 属组查找
# 查找属主为root的文件
find ./ -user root -type f
# 查找无属主的文件(易存安全隐患)
find ./ -nouser -type f
# 查找无属组的文件
find ./ -nogroup -type f
5. 进程资源占用排序
# 按CPU使用率从高到低排序
ps -ef --sort -pcpu
# 按内存使用率从高到低排序
ps -ef --sort -pmem
6. 补充检查
- 敏感目录(如
/tmp)的隐藏文件(如..命名的文件夹) - 结合可疑文件创建时间,用
find查找同时间段文件:
find /opt -iname "*" -atime 1 -type f(/opt 下 1 天前访问过的文件) - 使用
stat 文件名查看文件创建 / 修改时间
九、系统日志分析
日志是入侵溯源的关键,默认存放于 /var/log/。
1. 关键日志文件
| 日志路径 | 说明 |
|---|---|
/var/log/wtmp |
登录 / 退出、关机 / 重启记录(last 命令读取) |
/var/log/lastlog |
用户最后登录信息(lastlog 命令读取) |
/var/log/secure |
SSH/Telnet/FTP 等登录认证日志 |
/var/log/cron |
计划任务执行日志 |
/var/log/messages |
系统启动及错误日志 |
/var/log/apache2/access.log |
Apache 访问日志 |
2. 日志配置查看
more /etc/rsyslog.conf # 查看日志收集配置
3. 日志分析技巧
(1)定位爆破行为
# 爆破root账号的IP及次数(从高到低排序)
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
# 所有爆破尝试的IP
grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
# 爆破使用的用户名字典(次数从高到低)
grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
(2)登录成功记录
# 登录成功的IP及次数
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
# 登录成功的日期、用户名、IP
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
(3)用户管理日志
# 查看新增用户记录(如kali)
grep "useradd" /var/log/secure
# 查看删除用户记录(如kali)
grep "userdel" /var/log/secure
(4)权限切换日志
# su切换用户记录
grep "su: pam_unix(su-l:session): session opened" /var/log/secure
# sudo授权执行记录
grep "sudo:" /var/log/secure
十、WebShell 查杀与安全脚本
1. WebShell 查杀工具
- 河马 WebShell 查杀:http://www.shellpub.com
2. Linux 安全检查脚本
本文来自博客园,作者:{雾里看浮光(南知意)},转载请注明原文链接:{https://www.cnblogs.com/JaseLee}

浙公网安备 33010602011771号