在Ubuntu系統中配置PHP-FPM(FastCGI Process Manager)的安全選項,可以通過修改PHP-FPM的配置文件來實現。以下是一些常見的安全配置選項:
PHP-FPM的配置文件通常位于 /etc/php/{version}/fpm/pool.d/www.conf
,其中 {version}
是你的PHP版本號。
sudo nano /etc/php/{version}/fpm/pool.d/www.conf
默認情況下,PHP-FPM監聽Unix套接字。為了提高安全性,可以將其更改為TCP/IP監聽,并綁定到本地回環地址。
listen = 127.0.0.1:9000
確保PHP-FPM以非特權用戶和組運行,以減少潛在的安全風險。
user = www-data
group = www-data
禁用不必要的PHP模塊可以減少攻擊面。
php_admin_value[open_basedir] = /var/www/html/:/tmp/
php_admin_value[disable_functions] = eval,preg_replace,exec,system,shell_exec,passthru
限制文件上傳的大小和類型,以防止惡意文件上傳。
php_admin_value[upload_max_filesize] = 2M
php_admin_value[post_max_size] = 8M
php_admin_value[file_uploads] = On
配置錯誤日志的位置和級別,以便在出現問題時能夠及時發現。
catch_workers_output = yes
php_admin_value[error_log] = /var/log/php-fpm/error.log
配置PHP-FPM的進程管理選項,以確保系統資源的合理使用。
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
完成配置后,重啟PHP-FPM服務以應用更改。
sudo systemctl restart php{version}-fpm
確保防火墻只允許必要的端口和IP地址訪問PHP-FPM。
sudo ufw allow 9000/tcp
如果你使用的是SELinux或AppArmor,可以進一步限制PHP-FPM的權限。
sudo setsebool -P httpd_can_network_connect 1
sudo chcon -Rt httpd_sys_content_t /var/www/html
sudo aa-enforce /etc/apparmor.d/usr.sbin.php-fpm
通過以上步驟,你可以顯著提高PHP-FPM的安全性。請根據你的具體需求和環境調整配置。