在 Debian 上加强 PHP 安全配置,可以从系统层面、PHP 本身、Web 服务器、运维习惯几个维度来做。下面是一套实用、可落地的建议(以 Debian + PHP-FPM 为例)。
sudo apt update
sudo apt upgrade
sudo apt install unattended-upgrades
只安装需要的 PHP 模块:
apt install php-fpm php-cli
避免安装不必要的扩展,如:
php-imapphp-tidy常见位置:
/etc/php/8.x/fpm/php.ini
/etc/php/8.x/cli/php.ini
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,eval
如业务确实需要,可酌情开放
expose_php = Off
allow_url_include = Off
allow_url_fopen = Off # 如不需要远程文件
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
file_uploads = On
upload_max_filesize = 8M
post_max_size = 10M
max_file_uploads = 20
session.cookie_secure = On # HTTPS
session.cookie_httponly = On
session.cookie_samesite = Lax
session.use_strict_mode = On
user = www-data
group = www-data
不同站点可用不同 pool:
/etc/php/8.x/fpm/pool.d/site1.conf
listen = /run/php/php8.x-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.max_spare_servers = 10
location ~* \.(env|ini|log|sql|bak)$ {
deny all;
}
location /uploads/ {
location ~ \.php$ {
deny all;
}
}
chown -R www-data:www-data /var/www/html
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
如 storage/, uploads/
chmod 750 uploads
Content-Security-Policy
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: no-referrer
fail2ban 防止暴力破解apt install fail2ban
php -v
php -m
grep -R "disable_functions" /etc/php/
✅ 更新系统
✅ 关闭 expose_php
✅ disable_functions
✅ 不显示错误
✅ HTTPS + 安全头
✅ 正确文件权限
✅ 日志监控
如果你愿意,可以告诉我:
我可以给你一份可直接用的 php.ini + Nginx 配置模板。