linux服务器系统故障排查

目录

排查思路及方法

排查思路

1)进程排查命令

1. 查看当前系统状态(top),top命令:可以持续的监视进程的信息。

2.查看当前系统进程信息(ps),ps命令:可以查看进程的瞬间信息。

3. 查看非root运行的进程(ps)

4. 查看用户root运行的进程(ps),

5. 查看有没有奇怪进程(ps)

6. 检测隐藏进程(ps)

7. 检测系统守护进程(ls)

2)任务及用户活动排查命令

1. 查看当前有谁登陆在服务器上(who)

2. 查看当前登陆用户的IP信息(who)

3.查看近期用户登陆情况(last)

4. 查看历史命令(history)

5. 查看空口令账号(awk)

6. 查看uid为0的账号(awk)

7. 查看uid为0的账号(grep)

8. 查看进程树是否所有异常进程存在一个父进程、判断进程的父子关系(pstree)

3)网络排查命令

1. 列出本机所有的连接和监听的端口,查看有没有非法连接(netstat)

2. 查看谁在使用某个端口(lsof)

3. 查看多个进程号对应的文件信息(lsof)

4. 查看所有tcp网络连接信息(lsof)

5. 查看所有udp网络连接信息(lsof)

4)文件排查命令

1. 查看所有文件,包括隐藏的文件(ls)

2. 查看文件路径(whereis)

3. 查看文件创建时间(ls),命令:ls -al filname

4. 查找最近24小时内修改过的文件(find),命令:find ./ -mtime 0

5. 查找以.txt结尾的文件名(find),命令:find / -name "*.txt"

6. 查找不是以.txt结尾的文件(find),命令:find / ! -name "*.txt"


排查思路及方法

基本流程:接到应急指令后,与客户沟通,确认信息,定位问题,解决问题。

常见应急问题

大多数应急常见的问题都是挖矿,或者是被植入菠菜

小部分是中了勒索病毒,如果是勒索病毒的话,看看360、腾讯有没有什么

排查思路

  1. 接到应急指令后,一般都需要到客户现场去处理的,最好带上电脑和笔记本。

  2. 到达现场后,跟客户沟通,我方需要确认一些信息(我在Windows安全应急的第三篇有讲解一些), 方便定位问题,后面客户可能会让你上机操作,或者是使用你自己电脑登录目标机器查找问题。

找出问题 –> 解决问题 –> 编写报告

有句传言道是:扫描一分钟,报告一个钟,

如果是菠菜的话,那要多注意注意是不是修改了网站配置文件还是直接在网页上植入入的链接。

1)进程排查命令

服务器被入侵后,攻击者难免会利用恶意程序来达到自己的目的。

1. 查看当前系统状态(top),top命令:可以持续的监视进程的信息。

挖矿应急通常优先使用top命令来查看系统进程,

一般挖矿病毒站用CPU比较大

linux服务器系统故障排查_第1张图片

2.查看当前系统进程信息(ps),ps命令:可以查看进程的瞬间信息。

常用参数:

  1. -a:显示现行终端机下的所有程序,包括其他用户的程序。

  2. -e:列出程序时,显示每个程序所使用的环境变量。

  3. -f:显示UID,PPIP,C与STIME栏位。

linux服务器系统故障排查_第2张图片

3. 查看非root运行的进程(ps)

命令:ps -U root -u root -N

linux服务器系统故障排查_第3张图片

4. 查看用户root运行的进程(ps),

命令:ps -u root

linux服务器系统故障排查_第4张图片

5. 查看有没有奇怪进程(ps)

命令:ps -aef | grep inetd

grep是搜索命令

inetd程序是一个Linux守护进程.

6. 检测隐藏进程(ps)

命令:ps -ef | awk '{print}' | sort -n |uniq >1

命令:ls /proc | sort -n |uniq >2

sort命令将文本文件内容加以排序,可针对文本文件的内容,以行为单位来排序。-n参数依照数值的大小排序。

uniq命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。

7. 检测系统守护进程(ls)

命令:ls /etc/crontab

2)任务及用户活动排查命令

说明:机器使用过程中难免会留下一些痕迹

1. 查看当前有谁登陆在服务器上(who)

who命令查看当前登录用户(tty本地登陆 pts远程登录)

w命令查看系统信息,想知道某一时刻用户的行为

linux服务器系统故障排查_第5张图片

2. 查看当前登陆用户的IP信息(who)

命令:who -m

3.查看近期用户登陆情况(last)

命令:last -n 5 ## -n 5 表示输出5条

linux服务器系统故障排查_第6张图片

4. 查看历史命令(history)

命令:history 5 ## 5 表示输出最近使用的5条命令

linux服务器系统故障排查_第7张图片

5. 查看空口令账号(awk)

awk是一种编程语言,用于对文本和数据进行处理的

语法:awk [options] ‘pattern{action}’ file

命令:awk -F: '($2=="")' /etc/shadow

没有的话啥都不输出

在没有options和pattern的情况下,可以使用cat命令

linux服务器系统故障排查_第8张图片

6. 查看uid为0的账号(awk)

命令:awk -F: '($3==0)' /etc/passwd

7. 查看uid为0的账号(grep)

命令:grep -v -E "^#" /etc/passwd | awk -F: '$3==0{print $1}'

8. 查看进程树是否所有异常进程存在一个父进程、判断进程的父子关系(pstree)

命令:pstree -p

linux服务器系统故障排查_第9张图片

3)网络排查命令

说明:挖矿病毒避免不了要跟主机通信

1. 列出本机所有的连接和监听的端口,查看有没有非法连接(netstat)

netstat命令用来打印Linux中网络系统的状态信息。 常用参数:

  1. -a或–all:显示所有连线中的Socket。

  2. -c或–continuous:持续列出网络状态。

  3. -i或–interfaces:显示网络界面信息表单。

  4. l或–listening:显示监控中的服务器的Socket。

  5. -n或–numeric:直接使用ip地址,而不通过域名服务器。

  6. -t或–tcp:显示TCP传输协议的连线状况。

  7. -u或–udp:显示UDP传输协议的连线状况。

命令:netstat -lntp

linux服务器系统故障排查_第10张图片

图片

2. 查看谁在使用某个端口(lsof)

lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。 常用参数:

  1. -g:列出GID号进程详情;

  2. -d<文件号>:列出占用该文件号的进程;

  3. -i<条件>:列出符合条件的进程。(4、6、协议、:端口、 @ip )

  4. -p<进程号>:列出指定进程号所打开的文件;

  5. -u:列出UID号进程详情;

命令:lsof -i :22 # 看看谁在使用22端口

linux服务器系统故障排查_第11张图片

3. 查看多个进程号对应的文件信息(lsof)

命令:lsof -p 2,3 # 使用逗号分隔

linux服务器系统故障排查_第12张图片

4. 查看所有tcp网络连接信息(lsof)

命令:lsof -i tcp

linux服务器系统故障排查_第13张图片

5. 查看所有udp网络连接信息(lsof)

命令:lsof -i udp

linux服务器系统故障排查_第14张图片

4)文件排查命令

说明:服务器被入侵后,攻击者基本上都需要修改一些文件来维持脚本的运行

1. 查看所有文件,包括隐藏的文件(ls)

ls命令用来显示目标列表,不同类型的文件颜色也不同 常用参数:

  1. -a:显示所有文件及目录,包括隐藏文件

  2. -l:以长格式显示目录下的内容列表。

  3. -t:用文件和目录的更改时间排序

命令:ls -la

2. 查看文件路径(whereis)

命令:whereis filename

3. 查看文件创建时间(ls),命令:ls -al filname

4. 查找最近24小时内修改过的文件(find),命令:find ./ -mtime 0

find命令用来在指定目录下查找文件。

参数-mtime n按照文件的更改时间来找文件,n为整数。

例:

  1. -mtime 0 表示文件修改时间距离当前为0天的文件,即距离当前时间不到1天(24小时)以内的文件。

  2. -mtime 1 表示文件修改时间距离当前为1天的文件,即距离当前时间1天(24小时-48小时)的文件。

  3. -mtime+1 表示文件修改时间为大于1天的文件,即距离当前时间2天(48小时)之外的文件

  4. -mtime -1 表示文件修改时间为小于1天的文件,即距离当前时间1天(24小时)之内的文件

5. 查找以.txt结尾的文件名(find),命令:find / -name "*.txt"

忽略大小写,命令:find / -iname "*.txt"

6. 查找不是以.txt结尾的文件(find),命令:find / ! -name "*.txt"

你可能感兴趣的:(Linux,linux,服务器,运维)