溫馨提示×

Linux PHP-FPM安全配置指南

小樊
38
2025-10-09 19:36:37
欄目: 編程語言

Linux下PHP-FPM安全配置指南
PHP-FPM(FastCGI Process Manager)是Linux環境下PHP應用的關鍵組件,其安全配置直接影響服務器整體安全性。以下是分步驟的安全加固措施:

1. 更新系統與PHP-FPM至最新版本

定期更新系統和PHP-FPM是修復已知安全漏洞的首要步驟。使用包管理器(如apt)執行:

sudo apt update && sudo apt upgrade php-fpm php-cli

確保所有依賴包同步更新,避免因舊版本漏洞引發風險。

2. 以非特權用戶運行PHP-FPM

避免PHP-FPM以root身份運行,降低權限濫用風險。編輯PHP-FPM進程池配置文件(通常位于/etc/php/{版本號}/fpm/pool.d/www.conf),修改以下參數:

user = www-data
group = www-data

修改后重啟服務使變更生效:

sudo systemctl restart php{版本號}-fpm
```。  


### **3. 選擇安全的監聽方式(Unix Socket優先)**  
- **Unix Socket**:相比TCP端口,Unix Socket僅限本地訪問,更安全。修改配置文件中的`listen`指令:  
  ```ini
  listen = /run/php/php{版本號}-fpm.sock

確保Socket文件權限正確(屬主為www-data,權限為755):

sudo chown www-data:www-data /run/php
sudo chmod 755 /run/php
  • TCP端口:若需遠程訪問,需限制端口訪問范圍(如僅允許本地127.0.0.1),并配置防火墻規則。

4. 限制PHP-FPM進程資源

通過進程池參數控制PHP-FPM的資源消耗,防止資源耗盡攻擊:

pm = dynamic  # 動態進程管理模式
pm.max_children = 50  # 最大子進程數(根據服務器內存調整,如2GB內存建議30-40)
pm.start_servers = 5  # 啟動時的子進程數
pm.min_spare_servers = 5  # 最小空閑進程數
pm.max_spare_servers = 35  # 最大空閑進程數

合理配置可平衡性能與安全性。

5. 禁用危險PHP函數與功能

  • 禁用危險函數:在php.ini(或fpm/php.ini)中禁用可執行系統命令的函數,防止惡意代碼執行:
    disable_functions = exec,passthru,shell_exec,system,eval
    
  • 關閉遠程文件訪問:禁用allow_url_fopenallow_url_include,防止遠程文件包含攻擊:
    allow_url_fopen = Off
    allow_url_include = Off
    
  • 隱藏PHP信息:關閉expose_php,避免泄露PHP版本信息:
    expose_php = Off
    
  • 限制錯誤顯示:禁用錯誤顯示(防止敏感信息泄露),開啟錯誤日志:
    display_errors = Off
    log_errors = On
    error_log = /var/log/php_errors.log
    error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
    ```。  
    
    
    

6. 限制PHP腳本訪問范圍(open_basedir)

通過open_basedir限制PHP腳本只能訪問指定目錄,防止非法訪問系統文件:

open_basedir = /var/www/html/:/tmp/

多個目錄用冒號分隔,確保包含網站根目錄(如/var/www/html)和臨時目錄(如/tmp)。

7. 配置防火墻限制訪問

使用ufw(Uncomplicated Firewall)限制對PHP-FPM的訪問:

  • 若使用Unix Socket,無需額外配置(僅本地訪問);
  • 若使用TCP端口(如9000),僅允許必要IP(如本地127.0.0.1):
    sudo ufw allow from 127.0.0.1 to any port 9000/tcp
    sudo ufw enable
    

同時,限制SSH(22/tcp)、HTTP(80/tcp)、HTTPS(443/tcp)等必要服務的訪問。

8. 啟用慢日志監控性能與異常

開啟慢日志可識別執行緩慢的腳本(可能被惡意利用),在進程池配置文件中添加:

request_slowlog_timeout = 10s  # 超過10秒的請求視為慢請求
slowlog = /var/log/php-fpm/www-slow.log

定期檢查慢日志,優化性能或排查異常。

9. 使用安全模塊增強防護

  • SELinux:安裝并啟用SELinux,限制PHP-FPM的權限:
    sudo apt install selinux-basics selinux-policy-default
    sudo setenforce 1
    
  • AppArmor:安裝并配置AppArmor,限制PHP-FPM的文件訪問:
    sudo apt install apparmor apparmor-utils
    sudo aa-enforce /etc/apparmor.d/usr.sbin.php-fpm
    

根據實際需求調整策略。

10. 定期審計與備份

  • 審計配置:定期檢查PHP-FPM配置文件(www.conf、php.ini)的權限(屬主應為root,權限為644),確保無未經授權的修改;
  • 備份數據:定期備份網站文件、數據庫和配置文件,防止數據丟失。

通過以上步驟,可顯著提升Linux環境下PHP-FPM的安全性,降低被攻擊的風險。配置完成后,重啟PHP-FPM服務使變更生效:

sudo systemctl restart php{版本號}-fpm

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女