保护运行在 Debian 上的 PHP 环境,需要从系统层、PHP 本身、Web 服务器、应用代码、运维习惯几个层面来做。下面是一套比较实用、可落地的做法。
sudo apt update
sudo apt upgrade -y
定期更新 Debian 和 PHP 相关包,修复已知漏洞。
deb.sury.org(知名 PHP 维护源)apt install php-fpm php-cli
而不是 php-all
编辑 PHP 配置文件(通常是):
/etc/php/*/fpm/php.ini
/etc/php/*/cli/php.ini
expose_php = Off
display_errors = Off
log_errors = On
allow_url_fopen = Off
allow_url_include = Off
enable_dl = Off
disable_functions = exec,passthru,shell_exec,system,proc_open,popen
如应用确需某些函数,再按需放开。
file_uploads = On
upload_max_filesize = 2M
post_max_size = 8M
user = www-data
group = www-data
避免 PHP 以 root 运行。
pm = dynamic
pm.max_children = 20
location ~ /\. {
deny all;
}
location ~ \.(php|php5)$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
Options -Indexes
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 {} \;
uploads/ 等目录禁止执行 PHPufw allow 22
ufw allow 80
ufw allow 443
ufw enable
如非必要:
fail2ban/var/log/php-fpm.log
/var/log/nginx/access.log
如果你能说明:
我可以给你一套更精确的安全配置示例。