温馨提示×

Ubuntu中PHP安全如何配置

小樊
38
2025-10-24 23:43:20
栏目: 编程语言

Ubuntu中PHP安全配置指南

1. 更新系统与PHP版本

保持系统和PHP为最新版本是安全基础,可修复已知漏洞。运行以下命令更新系统及PHP相关包:

sudo apt update && sudo apt upgrade -y

2. 配置PHP核心安全参数(php.ini)

2.1 错误报告设置

禁用详细错误显示(防止敏感信息泄露),开启日志记录:

display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log

2.2 禁用危险函数

禁用可能被滥用的函数(如执行系统命令、文件操作等):

disable_functions = eval,exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec

2.3 限制文件上传

约束上传文件大小,防止恶意文件上传攻击:

file_uploads = On
upload_max_filesize = 2M  # 单个文件最大2MB
post_max_size = 8M        # POST数据最大8MB

2.4 目录访问控制

open_basedir限制PHP脚本可访问的目录(避免跨目录攻击):

open_basedir = /var/www/html:/tmp  # 仅允许访问网站根目录和临时目录

2.5 会话安全配置

增强会话安全性,防止会话劫持:

session.cookie_httponly = On      # 禁止JavaScript访问会话cookie
session.cookie_secure = On        # 仅通过HTTPS传输会话cookie
session.cookie_samesite = Strict  # 限制跨站请求携带cookie
session.gc_maxlifetime = 1440     # 会话有效期1440秒(24分钟)

2.6 隐藏PHP版本信息

避免泄露PHP版本,减少针对性攻击:

expose_php = Off

2.7 启用OPcache

提升性能的同时,减少源码暴露风险:

[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60

3. Web服务器安全配置

3.1 Apache配置

  • 禁用服务器版本信息泄露:
    /etc/apache2/conf-enabled/security.conf中添加:
    ServerTokens Prod
    ServerSignature Off
    
  • 启用mod_security(Web应用防火墙):
    sudo apt install libapache2-mod-security2
    sudo a2enmod security2
    sudo systemctl restart apache2
    

3.2 Nginx配置

  • 使用PHP-FPM处理PHP请求(/etc/nginx/sites-available/default):
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;  # 根据PHP版本调整
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    

4. 文件与目录权限管理

确保网站目录权限正确,避免未授权访问:

sudo chown -R www-data:www-data /var/www/html  # 网站目录属主为www-data
sudo chmod -R 755 /var/www/html                # 目录权限755,文件权限644

5. 安装安全模块

5.1 Fail2Ban

防止暴力破解(如SSH、Web登录):

sudo apt install fail2ban
sudo systemctl enable --now fail2ban

5.2 ModSecurity

为Apache添加WAF防护(需提前安装libapache2-mod-security2):

sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
sudo sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/modsecurity/modsecurity.conf
sudo systemctl restart apache2

6. 使用HTTPS加密

通过Let’s Encrypt获取免费SSL证书,强制HTTPS传输:

sudo apt install certbot python3-certbot-apache  # Apache
# 或 sudo apt install certbot python3-certbot-nginx  # Nginx
sudo certbot --apache -d yourdomain.com  # 替换为你的域名
sudo certbot renew --dry-run  # 测试自动续期

7. 定期维护与监控

  • 定期更新:每周运行sudo apt update && sudo apt upgrade -y,确保PHP及相关组件最新。
  • 日志监控:使用tail -f /var/log/php_errors.log实时查看PHP错误日志,或通过fail2ban监控暴力破解尝试。
  • 代码审计:使用PHPSA(PHP Security Advisories Checker)扫描代码,查找潜在安全漏洞:
    composer global require php-security/phpsa
    phpsa check /path/to/your/code
    

通过以上步骤,可全面加固Ubuntu环境下PHP的安全性,有效防范常见攻击(如SQL注入、XSS、文件上传漏洞等)。需根据实际业务场景调整配置(如上传文件大小、会话有效期等)。

0