Ubuntu PHP安全设置建议
导读: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等攻击;配置ServerTokens
和ServerSignature
隐藏服务器信息:
添加以下内容: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