首页主机资讯PHP在Ubuntu上的安全配置方法

PHP在Ubuntu上的安全配置方法

时间2026-01-18 07:24:04发布访客分类主机资讯浏览317
导读: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
如何在Ubuntu中配置PHP的错误报告级别 Linux系统与MongoDB的兼容性问题如何解决

游客 回复需填写必要信息