在Ubuntu上使用PHP-FPM(FastCGI Process Manager)时,确保系统安全是非常重要的。以下是一些关键的安全策略和最佳实践:
首先,确保你的Ubuntu系统和所有相关软件都是最新的:
sudo apt update
sudo apt upgrade
默认情况下,PHP-FPM可能会以root用户运行。为了提高安全性,应该创建一个专用的非root用户来运行PHP-FPM进程。
编辑PHP-FPM配置文件(通常是/etc/php/7.x/fpm/pool.d/www.conf
):
sudo nano /etc/php/7.x/fpm/pool.d/www.conf
找到user
和group
指令,并将它们设置为非root用户和组:
user = www-data
group = www-data
使用Unix套接字而不是TCP/IP端口可以提高安全性,因为Unix套接字不暴露在网络上。
在www.conf
文件中,找到listen
指令并修改为:
listen = /run/php/php7.x-fpm.sock
确保目录权限正确:
sudo chown www-data:www-data /run/php
sudo chmod 755 /run/php
使用UFW(Uncomplicated Firewall)来限制对PHP-FPM端口的访问。虽然我们使用Unix套接字,但仍然可以配置防火墙来限制其他不必要的访问。
启用UFW并允许必要的端口:
sudo ufw enable
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
编辑PHP配置文件(通常是/etc/php/7.x/apache2/php.ini
或/etc/php/7.x/fpm/php.ini
),启用以下安全设置:
启用错误报告:
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
禁用危险函数:
disable_functions = eval,exec,passthru,shell_exec,system
启用OPcache:
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
确保你的网站使用HTTPS来加密数据传输。你可以使用Let’s Encrypt免费获取SSL证书:
sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d yourdomain.com
定期备份你的网站文件和数据库,以防止数据丢失。
配置监控和日志记录,以便及时发现和响应安全事件。可以使用工具如Prometheus和Grafana来监控系统性能,以及ELK Stack(Elasticsearch, Logstash, Kibana)来分析日志。
通过遵循这些安全策略和最佳实践,你可以显著提高在Ubuntu上使用PHP-FPM的安全性。