在Ubuntu 22.04服务器(Nginx+PHP+MySQL环境)上排查木马和漏洞,需要从系统安全、服务配置、恶意文件检测等多维度入手,以下是具体步骤:
一、系统基础安全检查
1. 检查异常进程与连接
-
查看可疑进程:
筛选资源占用异常(CPU/内存过高)或名称可疑的进程,注意非系统默认进程:top # 实时查看进程,按P/C排序CPU/内存 ps aux | grep -vE root|www-data|mysql|nginx # 排除正常用户进程,重点看陌生进程 ps -ef | grep -v grep | grep -E /tmp|/var/tmp|/dev/shm # 检查临时目录异常进程对可疑进程,通过
ls -l /proc/[PID]/exe查看进程对应的可执行文件路径,确认是否为合法程序。 -
检查网络连接:
排查异常出站/入站连接(如连接陌生IP、非标准端口):netstat -tulnp # 显示所有监听端口及对应进程(需root权限) ss -antp # 更简洁的网络连接查看(推荐) lsof -i # 查看打开的网络文件描述符对陌生IP,可通过
whois [IP]或在线工具(如IPinfo)查询归属地和用途。
2. 检查系统账号与登录记录
-
排查异常用户:
查看是否有新增的可疑用户或特权用户(uid=0):cat /etc/passwd | grep -vE nologin|false # 筛选可登录用户 cat /etc/sudoers /etc/sudoers.d/* # 检查sudo权限用户注意是否有陌生用户名(如
admin、test等弱口令用户)。 -
查看登录日志:
检查异常登录(如异地IP、失败次数过多):last # 查看最近登录记录 lastb # 查看登录失败记录(需root) grep "Failed password" /var/log/auth.log # 筛选密码爆破记录
3. 检查系统文件完整性
-
使用
debsums检查系统文件篡改:
对比已安装软件包的文件哈希,检测被篡改的系统文件:sudo apt install debsums -y sudo debsums -c # 仅显示被修改的文件(C代表篡改)重点关注
/bin、/sbin、/usr/bin等目录下的文件,若有篡改需对比原始安装包或重装。 -
检查敏感文件修改时间:
查看近期被修改的系统关键文件(如/etc/crontab、/etc/hosts等):find /etc /bin /sbin /usr/bin -mtime -7 # 查找7天内修改过的文件
二、Web环境(Nginx+PHP)专项检查
1. 排查恶意文件(木马/webshell)
-
扫描Web目录可疑文件:
Webshell常隐藏在/var/www/html(或站点根目录),特征包括:- 文件名异常(如
xxx.php、shell.php、带随机字符串的文件) - 包含
eval、base64_decode、system等危险函数 - 文件权限异常(如
777)
可通过以下命令筛选:
# 查找包含危险函数的PHP文件 grep -rE eval(|base64_decode|system(|exec(|shell_exec /var/www/html # 查找权限为777的文件(正常Web文件应避免777) find /var/www/html -perm 0777 # 查找最近新增的小文件(可能是webshell) find /var/www/html -type f -size -10k -mtime -3 - 文件名异常(如
-
使用工具扫描:
推荐使用专业webshell扫描工具:# 安装ClamAV(开源杀毒软件) sudo apt install clamav clamav-daemon -y sudo freshclam # 更新病毒库 sudo clamscan -r /var/www/html # 扫描Web目录 # 或使用webshell扫描工具(如WeBanScan) wget https://github.com/WeBanScan/WebShellScan/archive/refs/heads/master.zip unzip master.zip && cd WebShellScan-master python3 webshellscan.py /var/www/html
2. 检查Nginx配置安全
-
排查异常虚拟主机或跳转:
检查Nginx配置文件(/etc/nginx/nginx.conf、/etc/nginx/sites-available/*),是否有陌生域名、恶意跳转或反向代理配置:grep -r "server_name" /etc/nginx # 查看所有绑定的域名 grep -r "proxy_pass" /etc/nginx # 查看反向代理配置 -
检查日志配置与访问日志:
确认Nginx访问日志(默认/var/log/nginx/access.log)是否开启,分析异常请求(如大量访问/wp-admin、/phpmyadmin的非本地IP):# 查看最近100条可疑请求(含.php?参数的异常URL) tail -n 1000 /var/log/nginx/access.log | grep -E .php?.*(eval|base64|cmd)
3. PHP环境安全检查
-
检查PHP配置(php.ini):
确保危险函数被禁用,避免执行系统命令:grep "disable_functions" /etc/php/*/cli/php.ini # CLI配置 grep "disable_functions" /etc/php/*/fpm/php.ini # FPM配置提议禁用的函数:
eval、system、exec、shell_exec、passthru、popen、proc_open等。 -
检查PHP-FPM运行权限:
PHP-FPM应使用低权限用户(如www-data)运行,避免root权限:grep "user = " /etc/php/*/fpm/pool.d/www.conf -
排查PHP扩展与版本漏洞:
检查PHP版本是否存在已知漏洞(如PHP 8.1以下的某些版本),并更新至安全版本:php -v # 查看版本 sudo apt update && sudo apt upgrade php* # 更新PHP
三、MySQL数据库安全检查
1. 检查数据库账号与权限
-
排查异常MySQL用户:
登录MySQL,查看所有用户及权限,删除陌生账号或过度授权的用户:mysql -u root -p SELECT user, host, authentication_string FROM mysql.user; # 列出所有用户 SHOW GRANTS FOR 可疑用户 @ host ; # 查看用户权限 DROP USER 可疑用户 @ host ; # 删除可疑用户注意是否有
%(允许所有IP登录)的用户,提议限制为特定IP。 -
检查数据库文件权限:
MySQL数据文件(默认/var/lib/mysql)应仅允许mysql用户访问:ls -ld /var/lib/mysql ls -l /var/lib/mysql/*.ibd # 检查表文件权限
2. 检查数据库日志与异常操作
-
查看MySQL错误日志:
排查暴力破解或异常连接:grep "Access denied" /var/log/mysql/error.log # 登录失败记录 -
检查慢查询日志(若开启):
分析是否有恶意SQL操作(如批量删除、写入文件):grep -i "DROP|DELETE|SELECT.*INTO OUTFILE" /var/log/mysql/mysql-slow.log
四、漏洞扫描与系统加固
1. 系统漏洞扫描
-
使用
lynis进行系统安全审计:
一款开源的Linux安全扫描工具,可检测系统漏洞、配置错误等:sudo apt install lynis -y sudo lynis audit system # 执行系统审计,根据输出修复提示项 -
检查Ubuntu安全更新:
确保系统已安装所有安全补丁:sudo apt update sudo apt list --upgradable | grep security # 查看安全更新 sudo apt upgrade -y # 安装更新
2. Web漏洞扫描
-
使用
nikto扫描Web服务漏洞:
检测Nginx/PHP的配置漏洞、敏感文件泄露等:sudo apt install nikto -y nikto -h http://localhost # 扫描本地Web服务 -
检查开源组件漏洞:
若使用WordPress、Drupal等CMS,需检查插件/主题是否有漏洞:# 以WordPress为例,使用wpscan扫描 wget https://github.com/wpscanteam/wpscan/archive/refs/heads/master.zip unzip master.zip && cd wpscan-master ruby wpscan.rb --url http://your-domain.com
五、应急响应(若发现异常)
-
隔离受影响服务:暂停Nginx/PHP-FPM/MySQL,避免恶意扩散:
sudo systemctl stop nginx php8.1-fpm mysql -
备份关键数据:备份Web目录、数据库文件(
/var/lib/mysql)到离线存储。 - 清除恶意文件:删除确认的webshell或木马,对篡改的系统文件,提议从官方源重装对应软件包。
- 重置密码:修改系统用户、MySQL、网站后台等所有密码,使用强密码(字母+数字+符号)。
- 加固防护:配置防火墙(UFW)限制端口访问,启用Fail2ban防暴力破解,定期备份数据。
通过以上步骤,可全面排查服务器的木马、异常行为及配置漏洞。提议定期执行(如每周一次),并结合自动化工具(如ClamAV定时扫描、Lynis审计)持续监控。


