在 Debian 上加固 PHP 安全,通常可以从系统层、PHP 配置层、Web 服务层、代码与运维层几个方面入手。下面给你一份比较实用、可落地的加固清单。
apt update
apt upgrade -y
只安装需要的扩展:
apt install php-cli php-fpm php-mysql
检查已安装模块:
php -m
移除无用模块(如 php-cgi, php-xmlrpc 等高风险或不用的)。
通常路径:
/etc/php/*/cli/php.ini/etc/php/*/fpm/php.inidisable_functions = exec,passthru,shell_exec,system,proc_open,popen,eval,assert,create_function
(根据业务保留必要函数)
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
open_basedir = /var/www/html:/tmp
allow_url_fopen = Off
allow_url_include = Off
expose_php = Off
session.cookie_secure = On
session.cookie_httponly = On
session.cookie_samesite = Lax
file_uploads = On
upload_tmp_dir = /var/www/tmp
upload_max_filesize = 8M
post_max_size = 10M
修改后重启:
systemctl restart php-fpm
user = www-data
group = www-data
避免 root 或共用用户。
listen = /run/php/php-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
pm = dynamic
pm.max_children = 50
pm.max_requests = 500
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
# 禁止访问敏感文件
location ~ /\.(env|git|svn) {
deny all;
}
.htaccess 不必要的重写<Directory /var/www/html/uploads>
php_flag engine off
</Directory>
chown -R www-data:www-data /var/www/html
find /var/www/html -type d -perm 755
find /var/www/html -type f -perm 644
.env)权限 600fail2ban 防暴力apt install lynis
lynis audit system
如果你愿意,可以告诉我:
我可以直接给你一份可复制的配置文件。