首页主机资讯Linux服务器上PHP如何安全防护

Linux服务器上PHP如何安全防护

时间2025-11-04 18:47:04发布访客分类主机资讯浏览755
导读:1. 系统及软件包更新 保持Linux系统(如CentOS、Ubuntu)及PHP相关软件包(PHP核心、扩展、Web服务器)为最新版本,及时修复已知安全漏洞。使用sudo yum update(CentOS)或sudo apt updat...

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-datawww)运行(PHP-FPM配置文件/etc/php/7.x/fpm/pool.d/www.conf中设置listen.owner = www-datalisten.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实时监控异常请求(如大量404500错误);
  • 木马排查:使用命令查找可疑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
如何在Linux中部署PHP应用 ubuntu lamp应用怎么部署

游客 回复需填写必要信息