首页主机资讯Ubuntu PHP安全设置建议

Ubuntu PHP安全设置建议

时间2025-10-09 20:41:03发布访客分类主机资讯浏览491
导读:1. 系统与PHP版本更新 保持系统和PHP最新是防范已知漏洞的核心措施。定期运行以下命令更新系统及PHP相关包: sudo apt update && sudo apt upgrade -y 建议使用Ubuntu官方PP...

1. 系统与PHP版本更新
保持系统和PHP最新是防范已知漏洞的核心措施。定期运行以下命令更新系统及PHP相关包:

sudo apt update &
    &
     sudo apt upgrade -y

建议使用Ubuntu官方PPA安装PHP(如ondrej/php),以获取更及时的安全更新。

2. PHP配置文件安全优化
通过php.ini调整关键参数,降低安全风险:

  • 错误报告:生产环境中关闭详细错误显示,避免泄露敏感信息(如数据库结构、路径):
    display_errors = Off
    log_errors = On
    error_log = /var/log/php_errors.log
    
  • 禁用危险函数:禁止执行系统命令、文件操作等高危函数,防止恶意代码执行:
    disable_functions = eval,exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
    
  • 限制资源使用:防止脚本占用过多资源导致服务器崩溃:
    max_execution_time = 30  # 脚本最大执行时间(秒)
    memory_limit = 128M      # 单个脚本最大内存(MB)
    upload_max_filesize = 2M # 上传文件大小限制(MB)
    post_max_size = 8M       # POST数据最大大小(MB)
    
  • 限制文件访问:使用open_basedir约束PHP脚本仅能访问指定目录(如网站根目录和临时目录):
    open_basedir = /var/www/html:/tmp
    
  • 禁用远程资源访问:防止通过URL包含或打开远程文件(如恶意脚本):
    allow_url_fopen = Off
    allow_url_include = Off
    
  • 隐藏PHP信息:关闭expose_php,避免向客户端泄露PHP版本信息:
    expose_php = Off
    

以上配置需根据实际环境调整,修改后重启Web服务(Apache/Nginx)生效。

3. Web服务器配置加固

  • Apache:启用mod_security(Web应用防火墙),拦截SQL注入、XSS等攻击;配置ServerTokensServerSignature隐藏服务器信息:
    sudo a2enmod security2
    sudo nano /etc/apache2/apache2.conf
    
    添加以下内容:
    ServerTokens Prod
    ServerSignature Off
    <
        Directory /var/www/html>
        
        Require all granted
    <
        /Directory>
    
    
  • Nginx:通过fastcgi_pass将PHP请求转发至PHP-FPM,避免直接解析PHP文件;限制访问敏感目录:
    location ~ \.php$ {
        
        include snippets/fastcgi-php.conf;
        
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    
    }
    
    location ~ /(uploads|config)/ {
        
        deny all;
    
    }
        
    
    修改后重启服务:
    sudo systemctl restart apache2  # Apache
    sudo systemctl restart nginx    # Nginx
    

4. HTTPS加密与防火墙设置

  • 启用HTTPS:使用Let’s Encrypt免费获取SSL证书,加密客户端与服务器之间的数据传输:
    sudo apt install certbot python3-certbot-apache  # Apache
    sudo certbot --apache -d yourdomain.com
    
  • 配置防火墙:使用UFW限制入站流量,仅允许HTTP(80)、HTTPS(443)和SSH(22):
    sudo apt install ufw
    sudo ufw allow 'Apache Full'  # 或 'Nginx Full'
    sudo ufw allow ssh
    sudo ufw enable
    

5. 会话与身份认证安全

  • 会话配置:启用HttpOnly(防止XSS窃取会话ID)和Secure(仅通过HTTPS传输会话ID):
    session.cookie_httponly = On
    session.cookie_secure = On
    session.gc_maxlifetime = 3600  # 会话有效期(秒)
    
  • 密码存储:使用password_hash()函数存储用户密码(支持bcrypt、Argon2等算法),避免明文存储:
    $hashed_password = password_hash($user_password, PASSWORD_DEFAULT);
    
    
    验证密码时使用password_verify()
    if (password_verify($input_password, $hashed_password)) {
    
        // 密码正确
    }
    
    

6. 文件与目录权限管理

  • 网站目录权限:网站文件所有者设为Web服务器用户(如www-data),权限设为755(目录)和644(文件):
    sudo chown -R www-data:www-data /var/www/html
    sudo find /var/www/html -type d -exec chmod 755 {
    }
         \;
    
    sudo find /var/www/html -type f -exec chmod 644 {
    }
         \;
        
    
  • 上传目录权限:上传目录(如uploads)设置为不可执行,防止上传的恶意脚本运行:
    sudo chmod -R 755 /var/www/html/uploads
    sudo chown -R www-data:www-data /var/www/html/uploads
    

7. 日志监控与安全审计

  • 日志分析:定期检查PHP错误日志(/var/log/php_errors.log)和Web服务器日志(/var/log/apache2/error.log/var/log/nginx/error.log),识别异常请求(如大量404错误、SQL注入尝试)。
  • 安全工具:使用phpseclib扫描代码漏洞,或部署入侵检测系统(如Fail2ban)防范暴力破解:
    sudo apt install fail2ban
    sudo systemctl enable fail2ban
    

8. 依赖库与框架安全

  • 更新依赖:使用Composer管理PHP依赖,定期运行composer update更新库文件,修复已知漏洞。
  • 使用安全框架:优先选择经过安全审计的框架(如Laravel、Symfony),利用其内置的安全功能(如CSRF防护、输入过滤)。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu PHP安全设置建议
本文地址: https://pptw.com/jishu/721746.html
dmesg中CPU温度过高如何处理 Ubuntu PHP性能监控工具

游客 回复需填写必要信息