Linux服务器上PHP如何安全防护
1. 系统及软件包更新
保持Linux系统(如CentOS、Ubuntu)及PHP相关软件包(PHP核心、扩展、Web服务器)为最新版本,及时修复已知安全漏洞。使用sudo yum update(CentOS)或sudo apt update &
    &
     sudo apt upgrade(Ubuntu)命令更新系统,确保PHP版本符合安全标准。
2. 防火墙配置
使用防火墙(如Firewalld、ufw、iptables)限制服务器网络访问,仅开放必要端口(HTTP 80、HTTPS 443),阻断非法IP访问。例如,Firewalld配置:sudo firewall-cmd --zone=public --add-port=80/tcp --permanent &
    &
     sudo firewall-cmd --zone=public --add-port=443/tcp --permanent &
    &
 sudo firewall-cmd --reload。
3. PHP配置文件(php.ini)安全优化
修改php.ini核心参数,强化PHP运行时安全:
- 关闭错误显示:
display_errors = Off(防止敏感信息如数据库凭证泄露),log_errors = On(将错误记录到/var/log/php_errors.log); - 禁用危险函数:
disable_functions = passthru,exec,system,shell_exec,popen,proc_open,ini_alter,dl,chown,chgrp,rename,unlink(阻断命令执行、文件操作等恶意行为); - 限制文件访问:
open_basedir = /var/www/html:/tmp(将PHP访问范围限制在网站目录和临时目录,防止跨目录攻击); - 控制文件上传:
upload_max_filesize = 2M(限制上传文件大小)、post_max_size = 8M(限制POST数据大小)、file_uploads = On(启用上传,但需配合目录权限); - 隐藏PHP信息:
expose_php = Off(移除HTTP响应头中的PHP版本信息,降低针对性攻击风险); - 会话安全:
session.cookie_httponly = On(防止XSS窃取会话ID)、session.cookie_secure = On(仅通过HTTPS传输会话ID)、session.gc_maxlifetime = 1440(设置会话有效期为24分钟)。 
4. Web服务器安全配置
- Nginx配置:限制上传目录、静态目录执行PHP文件,修正path_info漏洞。例如:
location ~* ^/(images|static|data)/.*\.(php|php5)$ { deny all; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 修正path_info漏洞 if ($request_filename ~* ^(.*)\.php) { set $php_url $1; } if (!-e $php_url.php) { return 404; } } - Apache配置:关闭目录索引、禁用不必要的模块(如
mod_autoindex),限制PHP执行目录。例如:< Directory /var/www/html/uploads> Options -Indexes php_admin_value engine Off < /Directory> 
5. 强化用户及权限管理
- 运行用户:确保PHP进程以非root用户(如
www-data、www)运行(PHP-FPM配置文件/etc/php/7.x/fpm/pool.d/www.conf中设置listen.owner = www-data、listen.group = www-data); - 文件权限:网站目录(如
/var/www/html)权限设为755,文件权限设为644,避免使用777等过度权限; - SSH安全:更改SSH默认端口(如
Port 2222)、禁用root直接登录(PermitRootLogin no)、强制使用密钥认证,降低SSH爆破风险。 
6. 安全扩展与功能启用
- 启用HTTPS:安装SSL证书(如Let’s Encrypt),配置Web服务器(Nginx/Apache)启用HTTPS,强制跳转HTTP到HTTPS(
return 301 https://$host$request_uri;),加密传输数据; - 启用OPcache:通过
opcache.enable=1开启OPcache,缓存编译后的PHP脚本,提高执行效率的同时减少源码泄露风险; - 安装安全扩展:如
php-mcrypt(加密)、php-gd(图像处理)、php-mbstring(多字节字符串),增强PHP功能安全性(注意:php-mcrypt在PHP 7.2+中移除,需替换为openssl)。 
7. 日志监控与木马排查
- 日志监控:定期检查PHP错误日志(
/var/log/php_errors.log)、Web服务器访问日志(/var/log/nginx/access.log、/var/log/apache2/access.log),使用tail -f实时监控异常请求(如大量404、500错误); - 木马排查:使用命令查找可疑PHP文件(如含
eval(、assert(、file_put_contents等关键词的一句话木马):grep -r --include="*.php" "eval(" /var/www/html > scan.txt grep -r --include="*.php" "file_put_contents" /var/www/html > suspicious.txt find /var/www/html -type f -name "*.php" -mtime -7 -exec ls -la { } \; # 查找7天内修改的PHP文件 
8. 数据备份与恢复
定期备份网站数据(HTML、CSS、JS)和数据库(MySQL/MariaDB),使用rsync备份网站目录(rsync -avz --delete /var/www/html/ /backup/website/),使用mysqldump备份数据库(mysqldump -u root -p dbname | gzip >
     /backup/dbname.sql.gz),确保数据丢失或被篡改时可快速恢复。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux服务器上PHP如何安全防护
本文地址: https://pptw.com/jishu/742153.html
