在Ubuntu系統中,使用PHP-FPM(FastCGI Process Manager)時,確保其安全運行是非常重要的。以下是一些實現PHP-FPM安全策略的建議:
確保你使用的是最新版本的PHP和PHP-FPM,因為新版本通常包含安全修復和改進。
sudo apt update
sudo apt upgrade php-fpm php-cli
確保PHP-FPM以非特權用戶和組運行,以減少潛在的安全風險。
編輯/etc/php/7.x/fpm/pool.d/www.conf
文件(根據你的PHP版本調整路徑),找到并修改以下行:
user = www-data
group = www-data
通過配置pm.max_children
、pm.start_servers
、pm.min_spare_servers
和pm.max_spare_servers
參數來限制PHP-FPM進程的數量。
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
啟用慢日志可以幫助你監控和調試潛在的性能問題。
request_slowlog_timeout = 10s
slowlog = /var/log/php-fpm/www-slow.log
編輯/etc/php/7.x/cli/php.ini
和/etc/php/7.x/fpm/php.ini
文件,配置以下安全選項:
display_errors = Off
:禁用錯誤顯示。log_errors = On
:啟用錯誤日志。error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
:限制錯誤報告。open_basedir
:限制PHP可以訪問的目錄。disable_functions
:禁用危險函數。display_errors = Off
log_errors = On
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
open_basedir = /var/www/html/:/tmp/
disable_functions = exec,passthru,shell_exec,system
使用ufw
或iptables
限制對PHP-FPM端口的訪問。
sudo ufw allow 9000/tcp
sudo ufw enable
定期更新系統和PHP-FPM以修補已知的安全漏洞。
sudo apt update
sudo apt upgrade
如果你使用的是SELinux或AppArmor,可以進一步限制PHP-FPM的權限。
安裝并配置SELinux策略:
sudo apt install selinux-basics selinux-policy-default
sudo setenforce 1
安裝并配置AppArmor:
sudo apt install apparmor apparmor-utils
sudo aa-enforce /etc/apparmor.d/usr.sbin.php-fpm
定期檢查PHP-FPM的日志文件,監控異常行為。
tail -f /var/log/php-fpm/www-error.log
tail -f /var/log/php-fpm/www-slow.log
通過以上步驟,你可以顯著提高PHP-FPM在Ubuntu系統中的安全性。