PHP在Ubuntu上的安全配置方法
导读:Ubuntu上PHP的安全配置方法 一 系统与基础加固 保持系统与PHP为最新版本,及时修补漏洞:执行 sudo apt update && sudo apt upgrade -y。 仅启用必要的PHP扩展,减少攻击面(如...
Ubuntu上PHP的安全配置方法
一 系统与基础加固
- 保持系统与PHP为最新版本,及时修补漏洞:执行 sudo apt update & & sudo apt upgrade -y。
- 仅启用必要的PHP扩展,减少攻击面(如禁用不需要的模块)。
- 启用防火墙并仅开放必要端口:sudo ufw allow ‘Apache Full’ 或 ‘Nginx Full’;sudo ufw enable。
- 获取并强制使用HTTPS:sudo apt install certbot python3-certbot-apache(或对应Nginx插件),certbot --apache -d yourdomain.com。
- 启用入侵防护:sudo apt install fail2ban。
- 启用AppArmor并加载PHP-FPM配置:sudo aa-status;按需编辑 /etc/apparmor.d/usr.sbin.php-fpm 并 reload。
- 目录与文件权限:sudo chown -R www-data:www-data /var/www/html;目录 755、文件 644;敏感配置如 config.php 设为 600。
二 php.ini 关键安全参数
- 隐藏版本与错误信息:expose_php = Off;display_errors = Off;log_errors = On;error_log = /var/log/php_errors.log。
- 禁用远程文件包含与执行:allow_url_fopen = Off;allow_url_include = Off。
- 禁用高危函数(按业务最小化保留):disable_functions = eval,exec,system,passthru,shell_exec,proc_open,pcntl_exec,escapeshellcmd,base64_decode。
- 限制上传与会话:upload_max_filesize = 2M;post_max_size = 8M;file_uploads = On;session.cookie_httponly = On;session.cookie_secure = On;session.gc_maxlifetime = 1440。
- 资源与执行控制:max_execution_time = 30;max_input_time = 30;memory_limit = 128M。
- 可选文件系统限制:open_basedir = /var/www/html:/tmp(仅在可控场景下使用,避免影响正常依赖)。
三 Web服务器与PHP-FPM配置
- Apache
- 隐藏版本信息:sed -i ‘s/ServerTokens OS/ServerTokens Prod/’ /etc/apache2/conf-available/security.conf。
- 禁用不必要模块:a2dismod autoindex xmlrpc;按需启用安全模块:a2enmod security2。
- 强制HTTPS与WAF:certbot --apache -d yourdomain.com;a2enmod security2。
- Nginx + PHP-FPM
- 仅通过Unix socket通信,禁止监听公网:listen = /run/php/php{ version} -fpm.sock;确保 listen.owner/listen.group 与 Web 服务用户一致。
- 典型PHP处理:location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php{ version} -fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
- 禁止访问敏感文件:location = /xmlrpc.php { deny all; } ;location ~ /.ht { deny all; } 。
- PHP-FPM进程与资源限制(/etc/php/{
version}
/fpm/pool.d/www.conf)
- 运行身份:user = www-data;group = www-data。
- 并发与回收:pm.max_children = 50;pm.max_requests = 500。
四 代码与数据安全措施
- 输入校验与输出编码:对用户输入进行过滤与校验;输出使用 htmlspecialchars($str, ENT_QUOTES, ‘UTF-8’) 防XSS。
- 防SQL注入:使用PDO/MySQLi预处理语句与参数绑定,避免拼接SQL。
- 安全密码存储:使用 password_hash($pwd, PASSWORD_DEFAULT) 与 password_verify()。
- 会话安全:session_start([ ‘cookie_httponly’ => true, ‘cookie_secure’ => true, ‘cookie_samesite’ => ‘Strict’, ]); session_regenerate_id(true);
- 依赖管理:使用 Composer 并定期审计:composer install/audit。
五 日志监控与审计
- 集中与实时查看日志:tail -f /var/log/php_errors.log;tail -f /var/log/php{ version} -fpm.log;以及 Web 服务访问/错误日志。
- 文件完整性监控:sudo apt install auditd;sudo auditctl -w /var/www/html -p wa -k php_files;ausearch -k php_files | aureport -f -i。
- 定期巡检:关注异常状态码(如大量404/500)、可疑UA、POST到可执行脚本、上传目录的可执行文件等。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: PHP在Ubuntu上的安全配置方法
本文地址: https://pptw.com/jishu/783954.html
