温馨提示×

Ubuntu如何安全配置PHP

小樊
45
2026-09-04 13:34:37
栏目: 编程语言

在 Ubuntu 上“安全配置 PHP”通常包含系统层、PHP 本身、Web 服务、应用层四个方面。下面给你一套实战向、可落地的安全配置指南(以 Ubuntu 20.04/22.04 + PHP 8.x 为例)。


一、系统与安装层面的安全

1. 使用官方或可靠源安装 PHP

sudo apt update
sudo apt install php-fpm php-cli

✅ 推荐:

  • 使用 php-fpm(比 mod_php 更安全)
  • 避免从不明 PPA 安装

2. 最小化安装 PHP 模块

只装需要的扩展:

php -m

删除不必要模块(如 php-imapphp-tidy 等):

sudo apt remove php-imap

二、PHP 本身的安全配置(核心)

配置文件位置:

/etc/php/8.x/fpm/php.ini
/etc/php/8.x/cli/php.ini

1. 关闭危险功能

disable_functions = exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec

若应用需要(如 Composer),CLI 可单独放开

2. 关闭危险特性

allow_url_include = Off
allow_url_fopen = Off   # 如不需要远程文件
expose_php = Off

3. 限制资源(防 DoS)

max_execution_time = 30
max_input_time = 60
memory_limit = 128M
post_max_size = 8M
upload_max_filesize = 2M

4. 错误与日志安全

display_errors = Off
log_errors = On
error_log = /var/log/php/php-error.log

三、PHP-FPM 安全配置

1. 使用独立用户运行

; /etc/php/8.x/fpm/pool.d/www.conf
user = www-data
group = www-data

2. 限制 FPM 权限

listen = /run/php/php8.x-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

3. 防止跨站

php_admin_value[open_basedir] = /var/www/html:/tmp

四、Web 服务器安全(Nginx / Apache)

Nginx 示例(防敏感文件)

location ~ /\.php$ {
    deny all;
}
location ~* \.(env|git|sql)$ {
    deny all;
}

禁止执行上传目录 PHP

location /uploads/ {
    location ~ \.php$ {
        deny all;
    }
}

五、文件与目录权限

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

✅ 原则:

  • 代码:不可写
  • 上传目录:不可执行
  • 配置:仅 owner 可读

六、高级安全建议(强烈推荐)

1. 使用 AppArmor / SELinux

Ubuntu 默认启用 AppArmor:

sudo aa-status

2. 使用 PHP 安全扩展

  • suhosin(旧)
  • snuffleupagus(现代推荐)

3. 定期更新

sudo apt update && sudo apt upgrade

4. 使用 HTTPS(Let’s Encrypt)

sudo apt install certbot python3-certbot-nginx

七、安全自检清单

✅ expose_php = Off
✅ disable_functions 已限制
✅ open_basedir 已配置
✅ 上传目录不可执行
✅ 错误不暴露给用户
✅ PHP 版本受支持


如果你愿意,我可以:

  • 针对 Laravel / WordPress / ThinkPHP 给专门安全配置
  • 给你一份 php.ini 安全模板
  • 帮你做 服务器安全审计清单

你用的是哪种 Web 环境?

0