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/wtmpchattr +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

注意:若可疑文件已删除但进程仍运行(内存进程),需通过 pslsof 找到 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 查杀工具

2. Linux 安全检查脚本

posted @ 2025-07-28 18:58  雾里看浮光(南知意)  阅读(35)  评论(0)    收藏  举报