温馨提示×

ubuntu php配置怎么防攻击

小樊
33
2026-09-07 11:46:42
栏目: 编程语言

在 Ubuntu 上配置 PHP 以防止常见攻击,需要从系统层面、PHP 本身、Web 服务器、应用代码多个维度来做。下面是一套实战向的安全配置建议(以 Ubuntu + Nginx/Apache + PHP-FPM 常见环境为例)。


一、系统 & 服务层面

1. 及时更新系统

sudo apt update
sudo apt upgrade -y

定期更新 PHP 及依赖:

sudo apt install --only-upgrade php*

2. 使用非 root 用户运行 PHP

PHP-FPM 默认已使用 www-data,确认:

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

3. 限制 PHP-FPM 权限

; 禁止执行系统命令(极端安全)
disable_functions = exec,passthru,shell_exec,system,proc_open,popen

二、PHP 安全配置(php.ini)

路径示例:

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

1. 关闭危险功能

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

2. 文件上传安全

file_uploads = On
upload_max_filesize = 2M
max_file_uploads = 20

3. 禁止远程文件包含(防 RCE)

allow_url_fopen = Off
allow_url_include = Off

4. 限制资源(防 DoS)

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

5. 防 Session 劫持

session.cookie_httponly = 1
session.cookie_secure = 1
session.use_strict_mode = 1

三、Web 服务器层防护

Nginx 示例(防敏感文件访问)

location ~* \.(env|git|svn|ini|log)$ {
    deny all;
}

location ~* /(wp-admin|admin) {
    allow 你的IP;
    deny all;
}

Apache 示例

<FilesMatch "\.(env|ini|log)$">
    Require all denied
</FilesMatch>

四、防常见攻击类型

1. SQL 注入

✅ 使用 PDO + 预处理

$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$id]);

❌ 禁止字符串拼接 SQL


2. XSS 攻击

echo htmlspecialchars($input, ENT_QUOTES, 'UTF-8');

可配合:

  • CSP 头
  • X-XSS-Protection

3. CSRF 攻击

  • 使用 token
  • 表单加:
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf'] ?>">

4. 文件上传漏洞

$allowed = ['jpg','png'];
$ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
if (!in_array($ext, $allowed)) {
    die('非法文件');
}

✅ 上传目录 禁止执行 PHP

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

五、防火墙 & 入侵防护

1. UFW 防火墙

sudo ufw allow 22,80,443/tcp
sudo ufw enable

2. Fail2Ban(防暴力破解)

sudo apt install fail2ban

3. 安装 ModSecurity(WAF)

  • Nginx / Apache 均可
  • 防 SQLi / XSS / 扫描

六、进阶建议

  • 使用 PHP 8.x(最新稳定版)
  • 使用 AppArmor / SELinux
  • 定期审计依赖(composer audit
  • 使用 Docker + 只读文件系统(高安全场景)

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

  • ✅ Ubuntu 版本
  • ✅ Nginx 还是 Apache
  • ✅ PHP 版本
  • ✅ 是否 WordPress / Laravel / 自研框架

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

0