在Ubuntu上使用PHP-FPM(FastCGI Process Manager)时,确保系统安全是非常重要的。以下是一些关键的安全策略和最佳实践:
1. 更新系统和软件
首先,确保你的Ubuntu系统和所有相关软件都是最新的:
sudo apt update sudo apt upgrade
2. 使用非root用户运行PHP-FPM
默认情况下,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
3. 配置PHP-FPM监听Unix套接字
使用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
4. 配置防火墙
使用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
5. 配置PHP安全设置
编辑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
6. 使用HTTPS
确保你的网站使用HTTPS来加密数据传输。你可以使用Let’s Encrypt免费获取SSL证书:
sudo apt install certbot python3-certbot-apache sudo certbot --apache -d yourdomain.com
7. 定期备份
定期备份你的网站文件和数据库,以防止数据丢失。
8. 监控和日志
配置监控和日志记录,以便及时发现和响应安全事件。可以使用工具如Prometheus和Grafana来监控系统性能,以及ELK Stack(Elasticsearch, Logstash, Kibana)来分析日志。
通过遵循这些安全策略和最佳实践,你可以显著提高在Ubuntu上使用PHP-FPM的安全性。