Ubuntu中PHP安全配置指南
保持系统和PHP为最新版本是安全基础,可修复已知漏洞。运行以下命令更新系统及PHP相关包:
sudo apt update && sudo apt upgrade -y
禁用详细错误显示(防止敏感信息泄露),开启日志记录:
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
约束上传文件大小,防止恶意文件上传攻击:
file_uploads = On
upload_max_filesize = 2M # 单个文件最大2MB
post_max_size = 8M # POST数据最大8MB
用open_basedir限制PHP脚本可访问的目录(避免跨目录攻击):
open_basedir = /var/www/html:/tmp # 仅允许访问网站根目录和临时目录
增强会话安全性,防止会话劫持:
session.cookie_httponly = On # 禁止JavaScript访问会话cookie
session.cookie_secure = On # 仅通过HTTPS传输会话cookie
session.cookie_samesite = Strict # 限制跨站请求携带cookie
session.gc_maxlifetime = 1440 # 会话有效期1440秒(24分钟)
避免泄露PHP版本,减少针对性攻击:
expose_php = Off
提升性能的同时,减少源码暴露风险:
[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
/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
/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;
}
确保网站目录权限正确,避免未授权访问:
sudo chown -R www-data:www-data /var/www/html # 网站目录属主为www-data
sudo chmod -R 755 /var/www/html # 目录权限755,文件权限644
防止暴力破解(如SSH、Web登录):
sudo apt install fail2ban
sudo systemctl enable --now fail2ban
为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
通过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 # 测试自动续期
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、文件上传漏洞等)。需根据实际业务场景调整配置(如上传文件大小、会话有效期等)。