温馨提示×

debian php安全怎么加固

小樊
40
2026-10-16 19:17:54
栏目: 编程语言

在 Debian 上加固 PHP 安全,通常可以从系统层、PHP 配置层、Web 服务层、代码与运维层几个方面入手。下面给你一份比较实用、可落地的加固清单。


一、系统与软件层面

1. 使用官方源并保持更新

apt update
apt upgrade -y
  • 只使用 Debian 官方源或可靠 backports
  • 不建议混用第三方 PHP 源(如 ondrej)除非必要

2. 最小化安装 PHP 模块

只安装需要的扩展:

apt install php-cli php-fpm php-mysql

检查已安装模块:

php -m

移除无用模块(如 php-cgi, php-xmlrpc 等高风险或不用的)。


二、PHP 配置加固(php.ini)

通常路径:

  • CLI: /etc/php/*/cli/php.ini
  • FPM: /etc/php/*/fpm/php.ini

1. 关闭危险功能

disable_functions = exec,passthru,shell_exec,system,proc_open,popen,eval,assert,create_function

(根据业务保留必要函数)

2. 关闭错误暴露

display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log

3. 限制文件访问

open_basedir = /var/www/html:/tmp

4. 关闭远程文件

allow_url_fopen = Off
allow_url_include = Off

5. 安全相关参数

expose_php = Off
session.cookie_secure = On
session.cookie_httponly = On
session.cookie_samesite = Lax

6. 上传安全

file_uploads = On
upload_tmp_dir = /var/www/tmp
upload_max_filesize = 8M
post_max_size = 10M

修改后重启:

systemctl restart php-fpm

三、PHP-FPM 安全

1. 使用独立用户

user = www-data
group = www-data

避免 root 或共用用户。

2. 限制 FPM 权限

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

3. 限制进程资源

pm = dynamic
pm.max_children = 50
pm.max_requests = 500

四、Web 服务层(Nginx / Apache)

Nginx 示例

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php-fpm.sock;
}

# 禁止访问敏感文件
location ~ /\.(env|git|svn) {
    deny all;
}

Apache

  • 禁用 .htaccess 不必要的重写
  • 禁止执行上传目录中的 PHP:
<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)权限 600

六、日志与监控

  • 启用 PHP 错误日志
  • 使用 fail2ban 防暴力
  • 定期审计:
apt install lynis
lynis audit system

七、进阶建议

  • 使用 AppArmor / SELinux
  • 启用 PHP OPcache(防代码篡改)
  • 使用 WAF(ModSecurity / Cloudflare)
  • 定期代码安全扫描(如 Psalm / PHPStan)

如果你愿意,可以告诉我:

  • 你用的是 Debian 几 + PHP 几
  • Web 服务是 Nginx 还是 Apache
  • 是 生产环境还是内网

我可以直接给你一份可复制的配置文件。

0 踩