linux应急响应-进程排查
1,netstat查看网络连接命令
用于分析可疑端口,IP地址,PID及程序进程
2,ls -alt /proc/
/proc/ 目录是一个虚拟文件系统,包含了当前 Linux 系统内核和进程的信息。它并不包含常规的文件,而是一些内核生成的“虚拟文件”,用于提供系统运行时信息。
ls -alt /proc/PID 命令能够查看对应可执行程序
lsof -p PID 命令查看进程所打开的文件
1. ps 命令
ps 是 Linux 系统中最常用的命令之一,用于列出当前系统中的进程。
- 列出所有进程:
ps aux
a 选项显示所有用户的进程,u 显示详细信息,x 显示没有控制终端的进程。
- 按 CPU 使用排序:
ps aux --sort=-%cpu
这将按 CPU 占用从高到低显示进程,适合查找占用 CPU 资源高的进程。
- 按内存使用排序:
ps aux --sort=-%mem
这将按内存占用从高到低显示进程,适合排查占用内存大的进程。
- 显示进程树:
ps -ejH
-H 选项显示进程的层级关系,帮助你查看父子进程的关系。
2. top 命令
top 命令是一个动态实时显示进程信息的工具,能够帮助你监控系统的进程、CPU 和内存使用情况。
- 实时监控进程:
top
默认显示按 CPU 使用率排序的进程。你可以按 P 按 CPU 排序,按 M 按内存排序。
- 筛选特定进程: 按下 Shift + F 来选择过滤条件,或直接输入你想监控的进程名称。
- 设置刷新频率:
top -d 1
-d 用来设置刷新时间,单位是秒。这里设置为每秒刷新一次。
3. htop 命令
htop 是 top 的增强版本,提供了更友好的用户界面和更多的交互选项。
- 实时显示进程:
htop
htop 提供了一个可操作的界面,你可以直接选择进程进行操作,例如终止进程、筛选进程等。 - 按进程名称或用户筛选: 按下 F3 键后输入进程名称进行筛选,按下 F4 键后输入用户进行筛选。
4. pgrep 和 pkill 命令
pgrep 用于查找进程,而 pkill 用于通过进程名或其他条件终止进程。
- 查找特定进程:
pgrep -l <process_name>
例如,查找名为 httpd 的进程:
pgrep -l httpd - 终止特定进程:
pkill <process_name>
例如,终止所有名为 httpd 的进程:
pkill httpd - 查找与父进程相关的所有子进程:
pgrep -P <parent_pid>
例如,查找进程 ID 为 1234 的所有子进程:
pgrep -P 1234
5. lsof 命令
lsof(List Open Files)命令用于列出系统中所有打开的文件,包括与进程相关的文件和网络连接。
- 查看进程打开的文件:
lsof -p <PID>
显示特定进程(由 <PID> 替代)打开的所有文件。例如,查看进程 ID 为 1234 的文件:
lsof -p 1234 - 查看某个文件被哪个进程打开:
lsof <filename>
例如,查看 /var/log/syslog 文件被哪个进程打开:
lsof /var/log/syslog - 查看网络连接:
lsof -i
显示所有打开的网络连接,包含进程和相关信息。可以添加筛选条件:
lsof -i :80
查看所有连接到 80 端口的进程。
6. netstat 命令
netstat 命令用于显示网络连接、路由表、接口统计信息等。它可以帮助你发现进程是否与外部进行网络通信。
- 显示所有网络连接:
netstat -tuln
-t 显示 TCP 连接,-u 显示 UDP 连接,-l 显示监听中的端口,-n 显示数字地址而不是主机名。 - 显示连接和进程:
netstat -tulnp
-p 显示与每个连接关联的进程 ID 和进程名。
7. strace 命令
strace 命令可以用来跟踪系统调用和信号,帮助你检查进程的行为,特别是在怀疑进程有异常行为时。
- 跟踪进程的系统调用:
strace -p <PID>
例如,跟踪进程 ID 为 1234 的系统调用:
strace -p 1234
- 跟踪某个命令:
strace <command>
例如,查看一个命令(如 ls)的系统调用:
strace ls
8. w 命令
w 命令可以显示当前登录系统的所有用户及其活动。
- 查看登录用户及其活动:
w
输出显示当前登录的用户、他们的终端、登录时间、当前活动等信息。
9. uptime 命令
uptime 命令显示系统运行时间、负载平均值等信息,能够帮助你了解系统是否处于高负载状态。
- 查看系统负载:
uptime
常见恶意进程排查指标:
- CPU 和内存占用高的进程:恶意进程通常会消耗大量的系统资源,使用 ps, top, htop 等命令可以发现这种进程。
- 不明来源的进程:使用 ps 和 pgrep 查找进程名,确认是否是已知和合法的进程。
- 异常的父进程关系:查看父进程和子进程的关系,如果没有明显的父进程或关联不正常,可能是恶意进程。
- 网络连接:使用 lsof, netstat 等工具查找与外部服务器的通信,是否存在不明的网络连接。