我刚才提到,一个用户启动了一个名为“httpd”的进程。
31712 ftp_johndoe 20 0 35988 8828 1460 S 14.0 0.0 1h50:31 httpd
28616 ftp_johndoe 20 0 5304M 43936 35080 S 4.0 0.2 0:02.72 /usr/bin/php5-cgi -c /var/www/vhosts/system/johndoe.net/etc/php.ini
31711 ftp_johndoe 20 0 35808 8608 1460 S 1.0 0.0 1h51:15 httpd
好吧,我想知道为什么该进程被称为“httpd”,因为在 debian 上 apache 没有启动名为“httpd”的进程。
如果我 lsof 它我会得到以下结果:
httpd 28868 ftp_johndoe txt REG 253,0 10456 12335127 /usr/bin/perl
httpd 28868 ftp_johndoe mem REG 253,0 22952 12335108 /usr/lib/perl/5.14.2/auto/File/Glob/Glob.so
httpd 28868 ftp_johndoe mem REG 253,0 109888 12335102 /usr/lib/perl/5.14.2/auto/POSIX/POSIX.so
httpd 28868 ftp_johndoe mem REG 253,0 18672 12335109 /usr/lib/perl/5.14.2/auto/Fcntl/Fcntl.so
httpd 28868 ftp_johndoe mem REG 253,0 39256 12980353 /usr/lib/perl5/auto/Socket/Socket.so
httpd 31712 ftp_johndoe 63u IPv4 520937935 0t0 TCP server.name.com:38504->64.233.165.26:smtp (ESTABLISHED)
httpd 31712 ftp_johndoe 67u IPv4 520937969 0t0 TCP server.name.com:38536->64.233.165.26:smtp (ESTABLISHED)
httpd 31712 ftp_johndoe 73u IPv4 520937951 0t0 TCP server.name.com:38520->64.233.165.26:smtp (ESTABLISHED)
所以我猜这是恶意软件。但我如何才能找到启动 httpd 进程的脚本呢?
答案1
您可以使用以下方式开始查找可执行文件
ls -l /proc/<PID>/exe
然后你可以找到谁创建了它(父 PID)
ps -p <PID> -o ppid=
并不断搜索,直到找到起点。
您还可以检查常见的自动执行点,如初始化脚本、全局和用户特定的 cron 作业、at
脚本、rc.local
文件
更新:我刚刚想起一个程序叫史努比那
Snoopy 是一个小型库,它记录系统上执行的所有命令(+ 参数)。
用它来检查命令执行情况非常有用
这不是一个完整的解决方案,我知道有一些简单的方法可以解决这个问题。希望有比我更有经验的人能提供更多帮助